Type mismatch sur boucle permettant le fusionnage de cellule

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Type mismatch sur boucle permettant le fusionnage de cellule

Messagepar lebanner » 19 Jan 2010 à 19:47

Bonjour a tous,

voici le code permettant de fusionner des cellules Excel, par contre j'ai un type Mismatch qur le While :

Code : Tout sélectionner
   Dim i As Long, j As Long
   XLApp.DisplayAlerts = False
   For i = 5 To XLApp.Range("B150").End(-4162).Row
      j = 1
      While Sheet.Cells(i + j, 2) = Sheet.Cells(i, 2)
         XLApp.Range(Sheet.Cells(i, 2), Sheet.Cells(i + j, 2)).MergeCells = True
         j = j + 1
      Wend
      i = i + j - 1
   Next
   XLApp.DisplayAlerts = True


Est ce que quelqu'un pourrait-il me donner un petit coup de main sur cette erreur ?

Merci d'avance

Cordialement
Dernière édition par lebanner le 20 Jan 2010 à 10:57, édité 1 fois.
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Messagepar lebanner » 20 Jan 2010 à 08:31

J'ai adapté ce code en VB et j'ai fais le test, la fusion de passe nickel.

Je ne comprend pas pourquoi il bloque sur le While.

Est ce que quelqu'un aurait-il une idée, une piste ?

Merci d'avance

Cordialement.
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Messagepar Michael DELIQUE » 20 Jan 2010 à 09:23

salut
si c'est la ligne du while qui bug passe Sheet.Cells(i + j, 2) = Sheet.Cells(i, 2) dans 2 variables intermédiaire (le temp de débugger)

puis regarde avec le debugeur ce qui cloche
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar lebanner » 20 Jan 2010 à 10:20

Bonjour,

J'ai mis les deux Sheet.Cells dans des variables :
Code : Tout sélectionner
Set recupcel1 = Sheet.Cells(i+j, 2)
Set recupcel2 = Sheet.Cells(i, 2)


Il me recupére un [OBJECT]
mais le While ne fonctionne pas. Je dois surement oublier quelque chose

Est ce que l'on peut comparer deux objects comme ci dessous ?

Code : Tout sélectionner
While recupcel1 = recupcel2
..........
Wend


Merci

Cordialement
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille

Messagepar lebanner » 20 Jan 2010 à 10:57

Bonjour,

J'ai réussi à résoudre le problème.

Voici le code complet :
Code : Tout sélectionner
   Dim i As Long, j As Long
   j = 0
   
   XLApp.DisplayAlerts = False
   XLApp.Range("B5").Select

   For i = 5 To XLApp.Range("B150").End(-4162).Row
      j = 1
      Set recupcel1 = Sheet.Cells(i+j, 2)
      Set recupcel2 = Sheet.Cells(i, 2)

      While recupcel1.value = recupcel2.value
      'While Sheet.Cells(i + j, 2) = Sheet.Cells(i, 2)
         XLApp.Range(Sheet.Cells(i, 2), Sheet.Cells(i + j, 2)).MergeCells = True '
         j = j + 1
         Set recupcel1 = Sheet.Cells(i+j, 2)
      Wend
      i = i + j - 1
      
   Next
   XLApp.DisplayAlerts = True


Je pense que le souci venait du fait que je comparai des objects et non des valeurs. En rajoutant le .value tout passe nickel

Merci

Cordialement
lebanner
Roi des posts
Roi des posts
 
Message(s) : 683
Inscrit(e) le : 19 Juin 2008 à 09:43
Localisation : Lille


Retour vers Développement

cron