VBA : copier coller de pls onglets ac boucle

Résolu
Sapinours Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
Sapinours Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voila ce que je cherche à faire.

Si dans ma feuille 1 ma cellule contient le numéro de matricule qui se trouve dans la feuille 2 alors
Je copie le numéro de projet et je le colle à la place du numéro de projet dans la feuille 1.

Mais excel me dit qu'il y a une erreur 424.

je me retrouve bloquée.

Je vous remercie pour vos propositions.

Sub Macrocopiercoller()

For x = 2 To 17400
For y = 2 To 3600

If Sheets("Feuil1").Select.Cells(x, 12).Value = Sheets("Feuil2").Select.Cells(y, 3).Value Then
Sheets("Feuil2").Select.Cells(y, 7).Select
Selection.Copy
Sheets("Feuil1").Select
Cells(x, 17).Select
ActiveSheet.Paste

End If

Next


End Sub

4 réponses

cousinhub29 Messages postés 1074 Date d'inscription   Statut Membre Dernière intervention   361
 
Re-,

T'inquiète, tout le monde apprend tous les jours....

Perso, lorsque je déclare mes variables, je mets toujours la 1ère lettre en majuscule, voire si c'est un mot composé, plusieurs lettres en majuscule...

Cela permet de voir de suite, lorsque tu tapes ton code après avoir déclaré tes variables, si celles-ci sont immédiatement reconnues par excel...

Du style :

Dim Cel As Range
Dim DerLig As Long
Dim I As Byte
Dim MonMsg As String


Et je ne mets sur la même ligne de déclaration que les variables de même portée...

Dim Cel As Range, DerCel As Range
Dim DerLig As Long
Dim I As Byte, J As Byte
Dim MonMsg As String


Mais ceci n'est que ma manière de faire, chacun restant libre....

Bonne journée
1
Decapsuleur Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   48
 
Bonjour,
1- virez tous les .Select en trop,
2- Déclarez vos variables :
Sub Macrocopiercoller() 
Dim x, y As Integer
For x = 2 To 17400 
For y = 2 To 3600 
If Sheets("Feuil1").Cells(x, 12).Value = Sheets("Feuil2").Cells(y, 3).Value Then 
Sheets("Feuil2").Cells(y, 7).Copy Sheets("Feuil1").Cells(x, 17) 
End If 
Next 
End Sub

3- Vérifiez la boucle, cela me semble étrange... Vous avez 2 For : For x et For y, mais un seul Next.......
0
cousinhub29 Messages postés 1074 Date d'inscription   Statut Membre Dernière intervention   361
 
Bonjour,

@ Decapsuleur, c'est très bien de déclarer les variables, mais comme tu les as déclarées, x est une variable Variant, et y Integer

La syntaxe correcte est plutôt :

Dim x As Integer, y As Integer


@ Sapinours, tel qu'écrit le code, tu effectues 65 598 004 boucles!!!!

Je pense qu'on doit trouver plus rapide....

Si tu pouvais joindre un fichier exemple, exempt de toutes données confidentielles, avec la structure réelle du fichier, et chaque onglet comportant une vingtaine de lignes, on pourrait trouver un code plus adapté....

Pour joindre un fichier, tu peux le faire via http://www.cijoint.fr/

Bon courage
0
Decapsuleur Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   48
 
Salut cousin!
Merci du renseignement.
On apprends tous les jours.
A+
0
Sapinours Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Merci pour votre aide mais j'ai trouvé !!!

Voici la bonne synthaxe.



Sub Macrocopiercoller()

Application.ScreenUpdating = False

Dim x As Integer


For x = 2 To 2070

Numeromatricule = Sheets("Feuil1").Cells(x, 14).Value

For y = 2 To 3600

If Numeromatricule = Sheets("Feuil2").Cells(y, 3).Value Then

Sheets("Feuil2").Cells(y, 7).Copy Sheets("Feuil1").Cells(x, 19)

End If

Next
Next


End Sub
0