dionys0s
XLDnaute Impliqué
Bonjour le forum
je sollicite votre aide pour comprendre comment manipuler un tableau.
Voilà l'idée de ma macro.
1-Je parcours chaque ligne et caque colonne d'une plage définie (par un InputBox typé RefEdit).
2-Si la cellule analysée est fusionnée, alors j'aimerais mettre dans une variable tableau ses 4 coordonnées (première ligne, première colonne, dernière ligne, dernière colonne) donc j'ai un vecteur COORDS() as variant que je redim en COORDS(x, 4). Je pense que cette partie est bonne dans la mesure où j'arrive bien à récupérer les coordonnées de ma première cellule analysée par la boucle.
3-Sur la cellule suivante, on rechope les coordonnées et on parcourt les éléments du tableau et si on est toujours dans la cellule fusionnée, alors on ne fait rien, et sinon, on rajoute un élément au tableau (les 4 coordonnées de la nouvelle cellule fusionnée). Donc je dois utiliser un ReDim Preserve COORDS(x, 4) (entretemps, x a pris +1 en valeur), mais ça fait planter ma macro.
Je ne comprends plus rien... si vous voyez ce qui cloche, je suis preneur. Je pensais avoir compris comment manipuler les variables tableaux, mais là je commence à douter...
D'avance merci pour votre aide.
je sollicite votre aide pour comprendre comment manipuler un tableau.
Voilà l'idée de ma macro.
1-Je parcours chaque ligne et caque colonne d'une plage définie (par un InputBox typé RefEdit).
2-Si la cellule analysée est fusionnée, alors j'aimerais mettre dans une variable tableau ses 4 coordonnées (première ligne, première colonne, dernière ligne, dernière colonne) donc j'ai un vecteur COORDS() as variant que je redim en COORDS(x, 4). Je pense que cette partie est bonne dans la mesure où j'arrive bien à récupérer les coordonnées de ma première cellule analysée par la boucle.
3-Sur la cellule suivante, on rechope les coordonnées et on parcourt les éléments du tableau et si on est toujours dans la cellule fusionnée, alors on ne fait rien, et sinon, on rajoute un élément au tableau (les 4 coordonnées de la nouvelle cellule fusionnée). Donc je dois utiliser un ReDim Preserve COORDS(x, 4) (entretemps, x a pris +1 en valeur), mais ça fait planter ma macro.
Je ne comprends plus rien... si vous voyez ce qui cloche, je suis preneur. Je pensais avoir compris comment manipuler les variables tableaux, mais là je commence à douter...
Code:
x = 1
ReDim COORDS(x, 4)
For i = PlageMax.Rows(1).Row To PlageMax.Rows(PlageMax.Rows.Count).Row
For j = PlageMax.Columns(1).Column To PlageMax.Columns(PlageMax.Columns.Count).Column
If ASh.Cells(i, j).MergeCells Then
PremLign = ASh.Cells(i, j).MergeArea.Rows(1).Row
PremCol = ASh.Cells(i, j).MergeArea.Columns(1).Column
DerLign = ASh.Cells(i, j).MergeArea.Rows(ASh.Cells(i, j).MergeArea.Rows.Count).Row
DerCol = ASh.Cells(i, j).MergeArea.Columns(ASh.Cells(i, j).MergeArea.Columns.Count).Column
If i = PlageMax.Rows(1).Row And j = PlageMax.Columns(1).Column Then
COORDS(x, 1) = PremLign
COORDS(x, 2) = PremCol
COORDS(x, 3) = DerLign
COORDS(x, 4) = DerCol
x = x + 1
Else
ReDim Preserve COORDS(x, 4) 'LA LIGNE PRISE DE TETE
For n = 1 To UBound(COORDS)
If COORDS(n, 1) = PremLign And COORDS(n, 2) = PremCol And COORDS(n, 3) = DerLign And COORDS(n, 4) = DerCol Then
Else
COORDS(x, 1) = PremLign
COORDS(x, 2) = PremCol
COORDS(x, 3) = DerLign
COORDS(x, 4) = DerCol
x = x + 1
End If
Next n
End If
Else
End If
Next j
Next i
D'avance merci pour votre aide.
Dernière édition: