Problème avec boucle "for each"

Bonjour à tous,

Je suis novice sur ce forum et également en VBA.

Je souhaite créer une macro permettant de "copier-coller" le contenu d'une cellule vers une autre feuille mais sur la même cellule ( de l'autre feuille).

J'ai essayé pas mal de codes ou je pense je me compliquait la vie (avec des copier coller ect..). J'en suis venu à utiliser la boucle "for each" pour répéter l'opération pour plusieurs cellules et d'effectuer une égalité entre ces 2 cellules.

Cependant je n'arrive pas à récupérer la localisation de mes cellules lors de mon égalité ...

Sub Copie_mag()

    Application.ScreenUpdating = False

    Dim V0 As Range

    For Each V0 In Range("B14,B16,I14,I16,N14,N16,S14,S16,Y14,Y16,AG14,AG16")

        Sheets("implantation physique").Range(V0) = Sheets(Sheets.Count).Range(V0).Value

    Next

        Application.ScreenUpdating = True

End Sub

Je suis sûr que c'est tout bête mais je bloque vraiment là dessus quelque temps ... J'ai épluché pas mal de forum sans trouver solution à mon problème.

Je ne sais pas si j'ai été suffisament clair.

Meri par avance de votre aide

Bonjour,

ça devrait donner quelque chose comme ça:

Sub Copie_mag()
    Dim Cel As Range

    Application.ScreenUpdating = False

    For Each Cel In Range("B14,B16,I14,I16,N14,N16,S14,S16,Y14,Y16,AG14,AG16")
        Sheets("implantation physique").Range(Cel.Address).Value = Cel.Value
    Next

    Application.ScreenUpdating = True

End Sub

Ici j'utilise Cel.Adress pour faire référence à la cellule à la même position dans l'autre feuille. A noter que j'aurais aussi pu utiliser Cells(Cel.Row,Cel.Column)

Nickel ça à l'air de bien foncionner, je te remercie !

Je me pose une question au niveau du nouveau code. A aucun moment on ne mentionne de se référer à la dernière feuille.

Comment le programme sait qu'il doit y aller ?

C'est parce qu'on écrit ceci:

Sheets("implantation physique").Range(Cel.Address).Value = Cel.Value

On précise que la cellule dans laquelle on veut écrire la valeur est située dans la feuille nommée "implantation physique"

et ici:

Range("B14,B16,I14,I16,N14,N16,S14,S16,Y14,Y16,AG14,AG16")

Comme on ne précise pas la feuille, ça prend la feuille active au moment où le code est lancé, ça peut être dangereux donc il vaut en général mieux mettre le nom si par erreur on lance ça avec la mauvaise feuille sélectionnée.

J'espère avoir pu répondre à ta question

D'accord je comprends !

Moi en l'occurence, il me faut sur la dernière feuille de calcul . Là je ne vois pas comment faire ...

On peut remplacer

Sheets("implantation physique")

par

Sheets(Sheets.Count)

Sheets prend soit le nom de la feuille, soit sa position, et Sheets.Count renvoie le nombre de feuilles dans le classeur, donc si on en a 3, ça prendra la 3ème feuille (la dernière donc).

Nickel !

Je m'étais peut être mal exprimé mais tu as répondu pertiellement à ma question

Mon code final est celui-là

Sub Copie_mag()
    Dim Cel As Range

    Application.ScreenUpdating = False

    For Each Cel In Range("B14,B16,I14,I16,N14,N16,S14,S16,Y14,Y16,AG14,AG16")
        Sheets("implantation physique").Range(Cel.Address).Value = Sheets(Sheets.Count).Range(Cel.Address).Value

    Next

    Application.ScreenUpdating = True

End Sub

Bon affaire résolu ! Je te remercie du temps que tu as pris pour me lire !

Bonjour,

Ok c'était donc ça qui était souhaité, je me permets une petite correction du coup pour rendre le code un poil plus propre

Sub Copie_mag()
    Dim Cel As Range

    Application.ScreenUpdating = False

    For Each Cel In Sheets(Sheets.Count).Range("B14,B16,I14,I16,N14,N16,S14,S16,Y14,Y16,AG14,AG16")
        Sheets("implantation physique").Range(Cel.Address).Value = Cel.Value

    Next Cel

    Application.ScreenUpdating = True

End Sub

Ah oui d'accord, ca me permet de comprendre la gymnastique au passage

Rechercher des sujets similaires à "probleme boucle each"