Ajout d'une variable "i" dans une macro et plages nommées

Bonjour,

j'ai différentes plages nommées, telle que COMP1, COMP2, COMP3, COMP3

Je souhaiterai exécuter la macro suivante qui me permettrait, en utilisant une variable i, de ne faire qu'une seule procédure au lieu de 4, mais l'écriture de celle-ci à un problème ... Sauriez-vous trouver la solution ?

Voici la macro que je souhaiterai utiliser :

Sub remplissage_CHARGE()

Dim cel As Range

Dim i As Integer

With ActiveSheet

For Each cel In Range("RECAP_FRISE")

If cel.Value = "COMP&i" Then

For i = 1 To 4

Cells(Range("DIFF_HEBDO").Row, cel.Column) = Range("DIFF_HEBDO_COMP&i")

Next i

End If

Next

End With

End Sub

Merci par avance.

Bonjour,

Pour commencer je te propose un petit jeu pédagogique ! Essaie ce code :

Sub ComprendreGuillemets()

Nom = "Pedro"
i = 22

MsgBox Nom & i
MsgBox "Nom" & i
MsgBox "Nom & i"

End Sub

Pour continuer, ce serait mieux si on avait ton fichier ou un fichier représentatif pour illustrer ton soucis...

Bonjour Pedro,

merci pour l'exercice.

J'ai bien vu et compris la différenciation des 3 écritures avec "".

J'ai alors modifié la macro de cette façon :

Sub remplissage_CHARGE()

Dim cel As Range

Dim i As Integer

With ActiveSheet

For Each cel In Range("RECAP_FRISE")

If cel.Value = "COMP"&i Then

For i = 1 To 4

Cells(Range("DIFF_HEBDO").Row, cel.Column) = Range("DIFF_HEBDO_COMP"&i)

Next i

End If

Next

End With

End Sub

Mais il ne passe rien ... Je pense que le for i=1 to 4 doit être placé plus haut (avant le if...) mais ca me donne une erreur de macro ...

Bonjour

Autre exercice : que vois tu en mode debug par rapport à cette ligne

If cel.Value = "COMP"&i Then

En ce qui me concerne, je ne comprends pas très bien ce qu'il y a dans ton fichier, c'est pour ça que je préférerais que tu nous en envoies un.

Si je comprends bien, tu as une cellule qui contient, par exemple : "COMP1" et une autre qui s'appelle "DIFF_HEBDO_COMP1". C'est bien ça ?

Je tiens à préciser que ton With ActiveSheet est parfaitement inutile car VBA travaille par défaut sur cette feuille, et que le cas inverse, les références liées à la feuille en "With" commencent par un "."

Merci pour vos aides réflectives, qui m'ont permis d'identifier et surtout comprendre mes erreurs :

j'ai alors placé au bon endroits les "", et j'ai mis plus haut le "for i = 0 to 4 " en déplaçant également le "end if" qui posait problème.

Voici alors la macro qui fonctionne :

Sub remplissage_Dynamique_CHARGE()

Dim cel As Range

Dim i As Integer

With ActiveSheet

.Range("DIFF_HEBDO").ClearContents

For Each cel In Range("RECAP_FRISE")

For i = 1 To 4

If cel.Value = "COMP" & i Then

Cells(Range("DIFF_HEBDO").Row, cel.Column) = Range("DIFF_HEBDO_COMP" & i)

End If

Next i

Next

End With

End Sub

Merci encore pour vos remarques constructives.

Re

Si COMP1, COMP2, COMP3 sont des plages nommées, ton code ne peut fonctionner en l'état sauf si chaque plage ne contient qu'une cellule dont le contenu est égal au nom...

Rechercher des sujets similaires à "ajout variable macro plages nommees"