Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro fusion de plages de cellules

2 réponses
Avatar
Domi
Bonjour à tous,
Je voudrais via une macro réaliser la chose suivante
A partir de la ligne 41 et jusqu'à la dernière ligne contenant une valeur
dans la colonne A (Max 150)

Pour chaque ligne, si la cellule de la colonne A contient une valeur
Je fusionne la cellule de la colonne A avec la cellule de la colonne B
Je fusionne la cellule de la colonne C avec les cellules des colonnes D, E
et F
Je fusionne la cellule de la colonne G avec la cellule de la colonne H
Je fusionne la cellule de la colonne J avec la cellule de la colonne K

En gros...
For Each Cell In Range("A41", Range("A150").End(xlUp)) 'jusque là je pense
que j'ai bon...

A partir de là ça marche sans la boucle mais avec la boucle for... c'est la
cata !
If Cell.Value <> "" Then
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(0, 0).Offset(0,
1)).Merge 'Fusion de A et B
Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 1).Offset(0,
3)).Merge 'Fusion de C, D, E et F
Range(ActiveCell.Offset(0, 5), ActiveCell.Offset(0, 5).Offset(0,
1)).Merge 'Fusion de G et H
Range(ActiveCell.Offset(0, 8), ActiveCell.Offset(0, 8).Offset(0,
1)).Merge 'Fusion de J et K
Next

Ca ne marche pas et en plus ça m'a l'air "lourd"
Ex Si A41 contient une valeur, je fusionne A41 et B41, C41 jusqu'à F41, G41
et H41, J41 et J41
Idem sur la ligne 42...etc jusqu'à ligne 150 Maxi...

Quelqu'un aurait-il une solution efficace à me proposer ?
Merci
Domi

2 réponses

Avatar
Daniel.C
Bonjour.
Essaie :

For Each cell In Range("A41", Range("A150").End(xlUp))
If cell.Value <> "" Then
cell.Resize(, 2).Merge 'Fusion de A et B
cell.Offset(, 1).Resize(, 4).Merge 'Fusion de C, D, E et F
cell.Offset(, 5).Resize(, 2).Merge 'Fusion de G et H
cell.Offset(, 8).Resize(, 2).Merge 'Fusion de J et K
End If
Next

Cordialement.
Daniel

Bonjour à tous,
Je voudrais via une macro réaliser la chose suivante
A partir de la ligne 41 et jusqu'à la dernière ligne contenant une valeur
dans la colonne A (Max 150)

Pour chaque ligne, si la cellule de la colonne A contient une valeur
Je fusionne la cellule de la colonne A avec la cellule de la colonne B
Je fusionne la cellule de la colonne C avec les cellules des colonnes D, E et
F
Je fusionne la cellule de la colonne G avec la cellule de la colonne H
Je fusionne la cellule de la colonne J avec la cellule de la colonne K

En gros...
For Each Cell In Range("A41", Range("A150").End(xlUp)) 'jusque là je pense
que j'ai bon...

A partir de là ça marche sans la boucle mais avec la boucle for... c'est la
cata !
If Cell.Value <> "" Then
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(0, 0).Offset(0,
1)).Merge 'Fusion de A et B
Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 1).Offset(0,
3)).Merge 'Fusion de C, D, E et F
Range(ActiveCell.Offset(0, 5), ActiveCell.Offset(0, 5).Offset(0,
1)).Merge 'Fusion de G et H
Range(ActiveCell.Offset(0, 8), ActiveCell.Offset(0, 8).Offset(0,
1)).Merge 'Fusion de J et K
Next

Ca ne marche pas et en plus ça m'a l'air "lourd"
Ex Si A41 contient une valeur, je fusionne A41 et B41, C41 jusqu'à F41, G41
et H41, J41 et J41
Idem sur la ligne 42...etc jusqu'à ligne 150 Maxi...

Quelqu'un aurait-il une solution efficace à me proposer ?
Merci
Domi


Avatar
Domi
Un premier test rapide... ça m'a l'air bon.
Merci ;o)
Domi

"Daniel.C" a écrit dans le message de news:
u3%
Bonjour.
Essaie :

For Each cell In Range("A41", Range("A150").End(xlUp))
If cell.Value <> "" Then
cell.Resize(, 2).Merge 'Fusion de A et B
cell.Offset(, 1).Resize(, 4).Merge 'Fusion de C, D, E et F
cell.Offset(, 5).Resize(, 2).Merge 'Fusion de G et H
cell.Offset(, 8).Resize(, 2).Merge 'Fusion de J et K
End If
Next

Cordialement.
Daniel

Bonjour à tous,
Je voudrais via une macro réaliser la chose suivante
A partir de la ligne 41 et jusqu'à la dernière ligne contenant une valeur
dans la colonne A (Max 150)

Pour chaque ligne, si la cellule de la colonne A contient une valeur
Je fusionne la cellule de la colonne A avec la cellule de la colonne B
Je fusionne la cellule de la colonne C avec les cellules des colonnes D,
E et F
Je fusionne la cellule de la colonne G avec la cellule de la colonne H
Je fusionne la cellule de la colonne J avec la cellule de la colonne K

En gros...
For Each Cell In Range("A41", Range("A150").End(xlUp)) 'jusque là je
pense que j'ai bon...

A partir de là ça marche sans la boucle mais avec la boucle for... c'est
la cata !
If Cell.Value <> "" Then
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(0, 0).Offset(0,
1)).Merge 'Fusion de A et B
Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(0, 1).Offset(0,
3)).Merge 'Fusion de C, D, E et F
Range(ActiveCell.Offset(0, 5), ActiveCell.Offset(0, 5).Offset(0,
1)).Merge 'Fusion de G et H
Range(ActiveCell.Offset(0, 8), ActiveCell.Offset(0, 8).Offset(0,
1)).Merge 'Fusion de J et K
Next

Ca ne marche pas et en plus ça m'a l'air "lourd"
Ex Si A41 contient une valeur, je fusionne A41 et B41, C41 jusqu'à F41,
G41 et H41, J41 et J41
Idem sur la ligne 42...etc jusqu'à ligne 150 Maxi...

Quelqu'un aurait-il une solution efficace à me proposer ?
Merci
Domi