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

Macro ajout de colonne

11 réponses
Avatar
JBF
Bonjour à tous,

Contrairement à ce que j'ai dit il y a une heure à Daniel.C j'ai finalement
besoin de votre aide maintenant!

Lorsque sur n'importe quelle ligne de la colonne A il y a écrit "GPL" je
souhaite insérer une colonne entre la colonne E et la colonne F mais aussi
en insérer une entre H et J et enfin entre M et N.

Autre point, Daniel.C m'a donné une macro pour fusionner la colonne B et C
lorsqu'il y a écrit "GPL" dans la colonne A. La voici :

Sub test()
' Pour chaque de la plage A1 à la dernière cellule de la colonne A
For Each cell In Range("A1", Range("A65536").End(xlUp))
If cell = "GPL" And cell.Offset(, 2) = "" Then
cell.Offset(, 1).Resize(, 2).MergeCells = True
End If
Next cell
End Sub

Il y a-t-il une possibilité d'intégrer l'ajout de colonnes à cette formule?

Quelqu'un peut m'apporter une solution, s'il vous plait?

Merci

1 réponse

1 2
Avatar
JBF
merci bcp. ça marche.

"Daniel.C" a écrit dans le message de news:

Sub test()
Dim Var As Boolean
For Each cell In Range("A1", Range("A65536").End(xlUp))
If cell = "GPL" And cell.Offset(, 2) = "" Then
cell.Offset(, 1).Resize(, 2).MergeCells = True
Var = True
End If
Next cell
If Var = True Then
Columns(6).Insert
Columns(11).Insert
Columns(16).Insert
End If
End Sub

Daniel

"JBF" a écrit dans le message de news:

Merci à tous pour votre aide precieuse.

Les deux dernières macros proposées par Daniel.C et MichDenis marchent
toutes les deux, bien que différentes.
Je n'ai que l'embarras du choix.

Je me demande maintenant si je peux associer la macro que m'a proposé
Denis.C pour fusionner deux lignes lorsque il y a "GPL" dans la colonne A
:

Sub test()
' Pour chaque de la plage A1 à la dernière cellule de la colonne A
For Each cell In Range("A1", Range("A65536").End(xlUp))
If cell = "GPL" And cell.Offset(, 2) = "" Then
cell.Offset(, 1).Resize(, 2).MergeCells = True
End If
Next cell
End Sub

... avec la macro que vous venez tous deux de me proposer (je mets
l'exemple de MichDenis pour ne pas qu'il y ait de jaloux!):

Sub test()

If Application.CountIf(Range("A1", Range("A65536").End(xlUp)), "GPL") > 0
Then
Columns(6).Insert
Columns(10).Insert
Columns(14).Insert
End If

End Sub

... afin de ne faire qu'une seule macro.

Ça c'était ma première interrogation.

Ensuite, je voudrais savoir si il est possible d'intégrer à cette macro
une fonction qui lui permette de supprimer les colonnes et les lignes
fusionnées si l'appellation "GPL" était amené à disparaître de la colonne
A? Et ce, sans avoir à refaire une manip' pour exécuter la macro?

Encore merci pour votre assistance.

JBF


"JBF" a écrit dans le message de news:

Bonjour et merci pour ta contribution.

Cette macro produit la même bizarrerie que celle proposée par Daniel.C.
Lorsque j'ai GPL plusieurs fois ds la colonne A ça insert bien plus de
colonnes que ce qui est demandé.

Une autre idée?

Merci

"Frédéric Sigonneau" a écrit dans le message de news:

A mon avis, il pourrait suffire de sortir de la boucle dès qu'on a
rencontré une fois "GPL" :

Sub test()
For Each cell In Range("A1", Range("A65536").End(xlUp))
If cell = "GPL" Then
Columns(6).Insert
Columns(10).Insert
Columns(14).Insert
Exit For ' <- ici
End If
Next cell
End Sub


FS
---
Frédéric Sigonneau
http://frederic.sigonneau.free.fr

oui j'ai fais le test justement mais le pb c'est que ça ne va pas si
ça décale plus d'une colonne. Je comprends ton explication mais il
faut que je trouve autre chose alors.

"Daniel.C" a écrit dans le message de news:
%
Oui.
La macro insère à chaque fois un colonne devant les colonnes F, J et
N.
A chaque décalage, les colonnes à droite de la colonne E sont
décalées d'une colonne, celles à droite de la colonne I sont décalées
de deux colonnes et celles situées à droite de la colonne M sont
décalées de 3 colonnes.
Tu peux le visualiser avec une feuille de test ou tu ne mettras
qu'une cellule GPL en colonne A.
Daniel
"JBF" a écrit dans le message de news:

Cette macro fonctionne bizarrement.
SI A1="GPL" ça insère les colonnes correctement entre E et F; I et
J; M et N.

Par contre si j'ai "GPL" en A1 mais aussi en A3 alors ça insère 2
colonnes entre E et F; une entre I et J; une entre K et L; une entre
M et N; et encore une entre P et Q.

Je comprends pas pkoi.

"Daniel.C" a écrit dans le message de news:

Essaie :
Sub test()
For Each cell In Range("A1", Range("A65536").End(xlUp))
If cell = "GPL" Then
Columns(6).Insert
Columns(10).Insert
Columns(14).Insert
End If
Next cell
End Sub

Daniel
"JBF" a écrit dans le message de news:

Bonjour à tous,

Contrairement à ce que j'ai dit il y a une heure à Daniel.C j'ai
finalement besoin de votre aide maintenant!

Lorsque sur n'importe quelle ligne de la colonne A il y a écrit
"GPL" je souhaite insérer une colonne entre la colonne E et la
colonne F mais aussi en insérer une entre H et J et enfin entre M
et N.

Autre point, Daniel.C m'a donné une macro pour fusionner la
colonne B et C lorsqu'il y a écrit "GPL" dans la colonne A. La
voici :

Sub test()
' Pour chaque de la plage A1 à la dernière cellule de la
colonne A
For Each cell In Range("A1", Range("A65536").End(xlUp))
If cell = "GPL" And cell.Offset(, 2) = "" Then
cell.Offset(, 1).Resize(, 2).MergeCells = True
End If
Next cell
End Sub

Il y a-t-il une possibilité d'intégrer l'ajout de colonnes à cette
formule?

Quelqu'un peut m'apporter une solution, s'il vous plait?

Merci




























1 2