Boucle ajout formules sur toutes les feuilles avec conditions

Bonjour à toutes et tous,

Je me suis inspiré d'un code proposé par MFERRAND pour compléter mon besoin.

Je fais donc ce nouveau post pour relancer celui ci :

https://forum.excel-pratique.com/viewtopic.php?f=2&t=115322&p=695368#p695368

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.

Merci

Cordialement Hugues

Ci après mon code a améliorer pour répondre à mon besoin :

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

Bonjour,

Il y avait un drôle de caractère dans le nom de la variable "DerniereLigne" ...

En collant le nom dans "NotePad++" on obtient : " DerniSS3reLigne = "

J'ai supprimé le nom et l'ai réécrit aux trois endroits.

Puis, j'ai ajouté "Sh." devant les références "Cells..." qui cherchaient les dernières lignes.

Ainsi, les dernières lignes sont recherchées sur les bonnes feuilles.

ric

Bonjour,

La solution se cache dans ce que tu as dis :

Toutes les lignes ont les formules de la ligne 2 à 3, ce qui signifie que la ligne de code où tu vas chercher la dernière ligne de la feuille ne prend pas en compte le changement de feuille, c'est confirmé lorsque l'on regarde la ligne :

'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)

En rouge, on peut voir Cells, et le soucis vient bien de là, tu ne précises pas la feuille dans laquelle tu vas chercher la cellule, Excel prend donc par défaut la feuille active, tu as donc toujours la même dernière ligne, tu as aussi un argument en double, celui que tu vois en bleu et en vert, je ne pense pas que ce soit normal...

Il y a aussi un autre soucis dans ton programme :

Sh.Range("B" & LIGNES).FormulaLocal = "=SUPPRESPACE(" & Range("A" & LIGNES).Address & ")"

Tu as le Range en rouge dont la feuille n'est pas précisée non plus, il va donc chercher ça dans la feuille active, je ne sais pas si c'est normal

Il faut que tu règles ces soucis avec Sh.range que tu as oublié à plusieurs endroits, puis fais nous un retour sur si ça à résolu ton soucis ou non

Bonjour à toutes et tous, Bonjour RIC & AUSECOUR,

RIC et AUSECOUR, merci à vous 2 pour vos réponses rapides qui m'ont permis de résoudre mon problème

RIC : Le problème de caractère est certainement au fait que je suis sur une version MAC de Excel et la gestion des accents (il faudra d'ailleurs que je pense à ne jamais mettre d'accent) et d'ailleurs lorsque j'ai essayé d'ouvrir ton fichier sur mon Excel Mac, problème demande de réparation etc... alors que nickel sur mon Excel Windows via ma machine virtuelle.

AUSECOUR : Merci pour tes conseils qui m'ont permis de mieux comprendre ce qui n'allait pas

Encore merci à vous 2

Cordialement

Hugues

Ci après le code devenu efficace, peut être peut on encore l'amélioré mais il me donne le résultat que j'attend

Sub AJOUTCOLEFORMULE()
Dim Lg&, Sh As Worksheet, f As Worksheet, DerniereLigne 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

            'Formule en colonne B
            ' MERCI RIC et AUSECOUR pour votre aide
            'https://forum.excel-pratique.com/viewtopic.php?f=2&t=115400&sid=3d6499f2e97365c58ee1d04d0e4aeef5

            'On détermine la derni?re ligne
            DerniereLigne = WorksheetFunction.Max(Sh.Cells(Rows.Count, 1).End(xlUp).Row, Sh.Cells(Rows.Count, 2).End(xlUp).Row, Sh.Cells(Rows.Count, 3).End(xlUp).Row)

            ' On applique une boucle jusqu'ˆ la ligne 2
            For LIGNES = DerniereLigne To 2 Step -1
               Sh.Range("B" & LIGNES).FormulaLocal = "=SUPPRESPACE(" & Sh.Range("A" & LIGNES).Address & ")"
            Next LIGNES

            Calculate

      End Select
   Next Sh
   Application.DisplayAlerts = True
   Application.ScreenUpdating = True

End Sub

Bonjour,

(il faudra d'ailleurs que je pense à ne jamais mettre d'accent)

Pour ma part, nom de feuille, nom de module, nom de variable, etc. je préfère ne jamais utiliser d'accent ... ailleurs que dans un texte.

ric

Rechercher des sujets similaires à "boucle ajout formules toutes feuilles conditions"