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... ] mais Columns("B") [ou Columns(2)]

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

Rechercher des sujets similaires à "boucle ajout colonne toutes feuilles sauf"