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 -
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
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
A voir également:
- VBA : copier coller de pls onglets ac boucle
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
4 réponses
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 :
Et je ne mets sur la même ligne de déclaration que les variables de même portée...
Mais ceci n'est que ma manière de faire, chacun restant libre....
Bonne journée
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
Bonjour,
1- virez tous les .Select en trop,
2- Déclarez vos variables :
3- Vérifiez la boucle, cela me semble étrange... Vous avez 2 For : For x et For y, mais un seul Next.......
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.......
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 :
@ 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
@ 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
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
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