EXCEL - MACRO
Résoluvoici mon souci, j'aimerais faire une macro pour ce que j'ai à faire car à la main je met vraiment trop de temps et je risque de perdre la face et faire plein d'erreur...
C'est pour cela que je sollicite le forum et les magiciens qui s'y promènent pour m'aider.
En 'français' la macro ferait ceci :
E19 en valeur de référence
> trouver dans la colonne AC la valeur identique
> Si trouvé, déplacer la ligne de AA jusqu'à HV en AA19
et ainsi de suite jusqu'a la ligne 2304 !!
Si vous avez des idées ou si mon explication n'est pas clair dites le moi
Merci Olive
Configuration: Windows XP Internet Explorer 7.0
27 réponses
La demande porte sur une macro Excel VBA qui, à partir d'une référence en E19, cherche une valeur identique dans AC et copie les colonnes AA à HV de la ligne correspondante jusqu'à 2304. Plusieurs réponses proposent une macro basée sur une boucle et une correspondance, avec l'utilisation éventuelle d'un Find, d'un déplacement en copie/coller et des indications de débogage. Des conseils pratiques évoquent le mode pas à pas, la gestion des feuilles et la sauvegarde, tandis que certains répondants signalent des difficultés techniques comme la capture d'un Find automatique. Certaines approches insistent sur la précision des critères de recherche et sur la gestion robuste des lignes jusqu'à 2304, privilégiant des méthodes avec contrôles d'étapes et sauvegardes avant exécution.
-
Oui merci lhermitte
C'est très sympa...
Bonne journée
Olive60 -
Contributeurenlever l'accès ?? Protégé le fichier ?
Enlever le lien ?
EDIT le lien pour ton classeur,..
Cliquer sur le triangle jaune à côté de ta réponse et exposer ta demande aux modérateur.
Mais quand c'est un fichier que tu ne veux pas communiqué à tout le monde met le en message privé.
Je crois que c'est ca que tu veux ?
-
ContributeurPas de quoi, c'était avec plaisir et toujours content de pouvoir rendre service.
A un prochaine fois. -
Ecoute lhermitte, je ne sais pas comment te remercier...
La ça fonctionne très bien apparement
C'est vraiment super sympa de ta part et vive CCM!
MErci encore pour tout!!!
Olive -
ContributeurTu met le curseur sur la ligne que je renseigne et tu tape F9, cette ligne va ètre en surbrillance brune et la macro va s'arrèter quand elle arrive sur cette ligne.
Autre façon.. A hauteur de cette ligne tu clic sur le cadre à gauche de la ligne. -
Merci Lhermitte,
petite question avant de la lancer, c'est quoi un point d'arret? -
ContributeurNerveux... J'ai pas eu façile de debbugé ton classeur, beaucoup de problème, enfin soit, ca devrait aller avec cette macro.
Met un point d'arrèt sur la ligne FL1.Select
Lancer avec F5 et quand arrète continuer avec F8, dés que la 1ère ligne à été copiée, arrèter la macro et controller si c'est bien ce que tu veux.
ET quand tu la lance pour de bon, va boire une tasse de café... :D
Fait quanf même un backup avant de lancer.Sub en_conc_la_liste_vente_ac_liste_ref() Dim i As Long, e As Long Dim FL1 As Worksheet Dim FL2 As Worksheet Dim a$, b$ Application.EnableEvents = False Application.ScreenUpdating = False Set FL1 = Sheets("vente monde") Set FL2 = Sheets("requet_temp") For i = 307 To 2304 For e = 4 To 2200 ' FL2.Range("F65536").End(xlUp).Row 'Pas possible d'employé cette formule, elle va jusque 28000 'Si plus de lignes dans ta base augmenter ce nombre. If FL2.Cells(i, 5) = FL1.Cells(e, 6) Then FL1.Select Range(Cells(e, 5), Cells(e, 207)).Copy FL2.Select Cells(i, 28).Select ActiveSheet.Paste Exit For End If DoEvents Next e DoEvents Next i Application.ScreenUpdating = True Application.EnableEvents = True End Sub
A+ -
Up :-)
-
je lance prudemment en faisant F8
ou carrément "Run"-
ContributeurOK avec F8 que se passe-t-il exactement ?
Tu sait à quoi sert F8.. C'est pour faire du pas à pas, c'est a dire que chaque fois que tu tape F8 ca passe sur l'instruction suivante.
Autre chose..
Est-ce que les noms sont écrit de la même façon dans les 2 feuilles (minuscule/majuscule) j'ai pas fait de sélection sur ca.
-
-
ContributeurEt comment tu la lance, elle va pas partir par l'opération du saint esprit.
-
Merci lhermite!
Mais il n'y a aucune réaction...
la macro n'a apparemment aucune action...
??? -
ContributeurFait quand même un backup avant de lancer la macro.
'Dans la feuille "requet_temp" prendre la valeur en E307. 'aller dans la feuille "vente monde" 'rechercher la meme valeur dans la colonne F 'Si elle trouve selectionner dans "vente monde" la ligne correspondante à la valeur trouvée et la copier 'retourner dans la feuille "requet_temp" et la coller en ligne 307 à partir de la colonne AB 'copier la ligne correspondante de la colonne E à GY Sub en_conc_la_liste_vente_ac_liste_ref() Dim i As Long, e As Long Dim FL1 As Worksheet Dim FL2 As Worksheet Set FL1 = Sheets("vente monde") Set FL2 = Sheets("requet_temp") For i = 307 To 2304 For e = i To FL2.Range("F65536").End(xlUp).Row If FL2.Cells(e, 6) = FL1.Cells(i, 5) Then 'ici trouver le nom FL2.Range(Cells(e, 5), Cells(e, 207)).Copy FL1.Cells(i, 28) End If Next e Next i End Sub
J'ai pas ton classeur donc sais pas tester, tu dit...
-
copier la ligne correspondante de la colonne E à GY
si tu as d'autres questions je suis la
MErci lhermiite
Olive -
ContributeurJ'ai presque fini, mais c'est pas possible de copier toute une ligne sur une adresse cellule...
tu dit..
selectionner dans "vente monde" la ligne correspondante
Faut me dire ce qui est à copier.. de colonne ? ,jusque colonne ? -
Meci lhermitte tu es un chef!!! si tu peux regarde la description de la macro que je viens de faire un peu plus haut...
encore désolé pour l'harcelement (profil bas) :-) -
Contributeur:D
J'ai dit...
à condition qu'elle fonctionnait avec une ligne !!!
Bon, ont va rectifié tes lignes alors..
Pas s'énervé, je m'en occupe mais il faut un peu de temps..et tu n'est pas le seul non plus -
en fait quand j'enregistre une macro "automatiquement" ou "a la main", je crois que VBA ne capte pas quand je fais un find (ctrl+F)...
AIDEZ moi please!!! -
Pleeease je suis meme pret a faire une donation a CCM !!!!!!!! :-)
-
Merci bcp lhermitte!!!
mais j'ai l'impression que la macro ne fait pas exactememnt ce que je voudrais!
en effet, elle devrait :
Dans la feuille "requet_temp" prendre la valeur en E307.
aller dans la feuille "vente monde"
rechercher la meme valeur dans la colonne F
Si elle trouve selectionner dans "vente monde" la ligne correspondante à la valeur trouvée et la copier
retourner dans la feuille "requet_temp" et la coller en ligne 307 à partir de la colonne AB
pour la suite :
Dans la feuille "requet_temp" prendre la valeur en E308.
aller dans la feuille "vente monde"
rechercher la meme valeur dans la colonne F
Si elle trouve selectionner dans "vente monde" la ligne correspondante à la valeur trouvée et la copier
retourner dans la feuille "requet_temp" et la coller en ligne 308 à partir de la colonne AB
et ainsi de suuite jusq'ua la ligne E2304...
Sivous pouvez m'aider je suis très embeté depuis 3 jours avec cette macro -
ContributeurBonjour,
Ta macro rectifiée, à condition qu'elle fonctionnait avec une ligne, j'ai pas tester.
Sub en_conc_la_liste_vente_ac_liste_ref() Dim i As Long For i = 307 To 2304 Sheets("vente monde").Select Cells(i, 5).Select 'Range("E307").Select 'la je selectionne la valeur à trouver '(cela serait bien si ca pouvais faire la même chose jusqu'à E2304) Selection.Copy 'Sheets("vente monde").Select 'Columns("F:F").Select ' la je fais un find avec la valeur a trouver Range("E253").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlToLeft)).Select Application.CutCopyMode = False Selection.Copy Sheets("requet_temp").Cells(i, 28) 'Range("AB307").Select 'ActiveSheet.Paste Next i End Sub
J'ai laissé tes lignes en commentaires pour que tu t'y retrouve. Après tu peu les supprimés.
A+
- 1
- 2