Page 1 sur 1

Type mismatch sur boucle permettant le fusionnage de cellule

MessagePublié: 19 Jan 2010 à 19:47
par lebanner
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

MessagePublié: 20 Jan 2010 à 08:31
par lebanner
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.

MessagePublié: 20 Jan 2010 à 09:23
par Michael DELIQUE
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

MessagePublié: 20 Jan 2010 à 10:20
par lebanner
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

MessagePublié: 20 Jan 2010 à 10:57
par lebanner
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