Boucle ajout colonne sur toutes les feuilles sauf
Bonjour à toutes et tous,
Malgré tous mes essais je n'arrive pas a créer une macro (le lot des novices qui essaye d'apprendre avec ce forum, l'enregistreur du macro et qui procède par tâtonnements) qui ferait une boucle pour ajouter une colonne à tous les onglets du classeur sauf certains exclus.
Ci joint un fichier et ci après mon code qui ne fonctionne pas
Sub AJOUTCOL()
Dim Sh As Worksheet, f As Worksheet
Set f = Sheets("FUSIONCEX")
For Each Sh In Worksheets
If Sh.Name <> FUSIONCEX And Sh.Name <> "LIBELLES" And Sh.Name <> "TABLE" Then 'feuilles à ne pas traiter
Columns("B:B").Insert Shift:=xlToRight
End If
Next
End Sub
Merci de votre retour sur le comment modifier mon approche
Cordialement
Hugues
Bonjour Hugo, bonjour le forum,
Peut-être comme ça (non testé) :
Sub AJOUTCOL()
Dim Sh As Worksheet
For Each Sh In Worksheets
If Not Sh.Name = FUSIONCEX And Not Sh.Name = "LIBELLES" And Not Sh.Name = "TABLE" Then 'feuilles ˆ ne pas traiter
Columns("B:B").Insert Shift:=xlToRight
End If
Next
End Sub
Bonsoir,
Essaye ça :
Sub AJOUTCOL()
For Each Sh In Worksheets
If Sh.Name <> "FUSIONCEX" And Sh.Name <> "LIBELLES" And Sh.Name <> "TABLE" Then 'feuilles ˆ ne pas traiter
Sh.Columns("B:B").Insert Shift:=xlToRight
End If
Next
End Sub
Bonjour,
Sub AJOUTCOL()
Dim Sh As Worksheet
For Each Sh In Worksheets
Select Case Sh.Name
Case "FUSIONCEX", "LIBELLES", "TABLE"
Case Else
Sh.Columns("B").Insert
End Select
Next Sh
End Sub
Un SelectCase est plus pratique qu'une instruction If dans ce type de cas.
On écrit Range("B:B") [je ne conseille pas...
Lorsqu'il s'agit d'une ligne ou d'une colonne (entière par définition) on n'a nul besoin d'indiquer le sens du déplacement des cellules existantes, elles n'auront pas le choix !
Je renouvelle mes conseils d'oublier l'enregistreur : il n'apprend rien et incite au contraire à des erreurs quand on l'imite. Il n'aide en particulier pas à qualifier les expressions au moyen de l'objet auxquelles elles doivent référer...
Cordialement.
Bonjour à toutes et tous, RAJA, THAUTEME, MFERRAND,
RAJA, THAUTEME, MFERRAND, merci à tous les 3 pour votre aide.
THAUTEME, ta solution ne fonctionne pas.
RAJA et MFERRAND vos 2 codes fonctionnent.
Je retiens la proposition et les conseils de MFERRAND.
Merci beaucoup
Trés Cordialement
Hugues
Bonjour à toutes et tous,
Je me suis inspiré du code de MFERRAND pour compléter mon besoin.
J'arrive bien a créer une colonne supplémentaire sur chaque feuille sauf celles écartées.
Je voudrais maintenant sur chaque feuille sur cette colonne supplémentaire y ajouter une formule (SUPPRESPACE) pour toutes les lignes de chaque feuille sauf la première ligne si une valeur est présente en colonne A.
J'y arrive partiellement mais ma boucle dernière ligne ne semble pas efficiente sur chacune des feuilles mais uniquement et encore de manière erronée sur la première feuille et ai reprise sur les autres feuilles de la boucle.
Ainsi la formule est inscrite sur toutes les feuilles pour les lignes 2 à 3, alors qu'elle devrait par exemple sur la feuil1 être inscrite uniquement sur ligne 2 et sur feuil2 de ligne 2 à 20
Le fichier exemple sera certainement plus compréhensible.
Sub AJOUTCOLEFORMULE()
Dim Lg&, Sh As Worksheet, f As Worksheet, DernièreLigne As Long
Application.DisplayAlerts = False
Application.ScreenUpdating = False
'Merci MFERRAND pour son aide
'https://forum.excel-pratique.com/viewtopic.php?f=2&t=115322&p=695368#p695368
For Each Sh In Worksheets
Select Case Sh.Name
Case "FUSIONCEX", "LIBELLES", "TABLE"
Case Else
'SUPPRIMER ESPACES INUTILES
'Ajout colonne
Sh.Columns("B").Insert
'On détermine la dernière ligne
DernièreLigne = WorksheetFunction.Max(Cells(Rows.Count, 1).End(xlUp).Row, Cells(Rows.Count, 2).End(xlUp).Row, Cells(Rows.Count, 2).End(xlUp).Row)
' On applique une boucle jusqu'à la ligne 2
For LIGNES = DernièreLigne To 2 Step -1
Sh.Range("B" & LIGNES).FormulaLocal = "=SUPPRESPACE(" & Range("A" & LIGNES).Address & ")"
Next LIGNES
Calculate
End Select
Next Sh
End Sub
Merci
Cordialement Hugues