Coller colonne d'un excel a l'autre

Bonjour
J’aimerai mettre les prix de mon fichier " prix " ( Colonne C - D - E - F ) sur mon fichier "Reference ".
En sachant qu’il faudrait que les prix soit uniquement sur les lignes en jaunes
Comment faire - car quand je filtre en mettant uniquement les lignes jaunes et que je copie - colle cela ne veut pas me le faire car il y a des lignes entre chaque couleur jaune
Prix.xlsx (10,2 Ko) Reference.xlsx (73,7 Ko)
merci d’avance pour votre aide

Bonsoir
Si l’ordre des données n’est pas impérativement à respecter tu fais un tri de toutes tes données par la colonne K qui ramène toutes tes lignes jaunes ensembles en tête (seules à avoir une données dans cette colonne)
Reste à rapporter aisément les prix sur toutes les lignes jaunes en tête regroupées puis à retrier selon ta convenance
Si l’ordre initial est important la solution dans cet esprit consiste avant le tri par la colonne K de remplir la colonne L qui est vide de chiffres incrémentés pour cela il suffit de mettre le chiffre 1 dans la première cellule et d’opérer dessus un cliquer-glisser si l’incrémentation ne s’opère pas cliquer-glisser en maintenant la touche ctr enfoncé et ce jusqu’à la dernière ligne (opération très rapide)
Puis refaire toute la manipulation précédent une fois les prix intégrés dans les lignes jaunes refaire un tri par la colonne L en ordre croissant et de retrouver l’ordre initial
Reste juste à vider la colonne L ou la supprimer au choix

Cela devrait le faire

Dis moi

Bonjour,

Les deux classeurs doivent être dans le même dossier
Ouvrir le classeur « Référence » et cliquer sur le bouton

Le reste se fait tout seul avec une petite macro
Je ne joint que le fichier Référence.xslm, le classeur Prix étant le même que celui fourni

Reference.xlsm (88,5 Ko)

Merci Mimi
mais je ne comprend pas - faut que je mette dans le même dossier : donc une feuille le dossier référence et en feuille 2 le dossier prix ?

Re,
Non
Un dossier ou tu places ses deux classeurs EXCEL (voire même d’autres)
mais il faut que les deux classeurs soient dans le même dossier pour que le chemin de l’ouverture du classeur PRIX s’ouvre automatiquement

OK
le soucis c’est que ca me met :
Erreur d’execution ‹ 10004 › :
Désole … Nous ne trouvons pas C:\User\barry\Downloads\Prix.xlx
Peut etre l’avez vous déplacé, renommé ou supprimé ?

Re

Dans le dossier
C:\User\barry\Downloads
tu dois mettre les fichiers
Prix.xlsx
Reference.xlsm

en mettant le fichier prix en feuille 2 de mon fichier Reference ca ne serait pas plus simple ?
Car je n’arrive pas avec la macro que tu m’a faite - trop compliqué pour moi

Re
Comment se nomme les onglets de tes classeurs
s’il se nomment pas « Feuil1 », normal que cela ne fonctionne pas

Voilà la macro avec les commentaires sur les lignes pour mieux la comprendre

Option Explicit

Sub Test()
  'Déclarations des variables
  Dim WB1 As Workbook, WB2 As Workbook
  Dim ws1 As Worksheet, ws2 As Worksheet
  Dim chemin As String, fichier As String
  Dim j%, i%, L%, Dl%
  
    'Masquer le changement d'écran - rafraichissement d'écran
    Application.ScreenUpdating = False
    
    'Initialisation des variables
    Set WB1 = ThisWorkbook 'C'est le classeur ouvret - Ici le classeur Reference
    Set ws1 = WB1.Worksheets("Feuil1") 'Entre les guillemets, c'est le nom de la feuille ou onglet du classeur Reference
    Dl = ws1.Range("A" & Rows.Count).End(xlUp).Row ' Dl = à la dernière cellule remplie de la colonne A de Reference
    
    chemin = ThisWorkbook.Path & "\" 'C'est le chemin ou se trouve le classeur Prix, donc le même chemin que Reference
    fichier = "Prix.xlsx" 'Nom du fichier à ouvrir
    Set WB2 = Workbooks.Open(chemin & fichier) 'On ouvre le classeur suivant le chemin et son nom de fichier
    Set ws2 = WB2.Worksheets("Feuil1") 'Entre les guillemets, c'est le nom de la feuille ou onglet du classeur Prix
  
    j = ws2.Range("A" & Rows.Count).End(xlUp).Row 'j = à la dernière cellule remplie de la colonne A de Prix
      For i = 2 To j 'boucle sur le classeur Prix de la ligne 2 à la ligne j
        For L = 2 To Dl 'boucle sur le classeur Reference de la ligne 2 à la ligne Dl
          If ws1.Cells(L, 1).Text = ws2.Cells(i, 1).Value Then 'Si les 2 valeurs des 2 lignes sont identiques alors
            ws1.Cells(L, 3).Value = ws2.Cells(i, 3).Value 'Je copie et colle les données de la colonne C suivant sa ligne
            ws1.Cells(L, 4).Value = ws2.Cells(i, 4).Value 'Je copie et colle les données de la colonne D suivant sa ligne
            ws1.Cells(L, 5).Value = ws2.Cells(i, 5).Value 'Je copie et colle les données de la colonne E suivant sa ligne
            ws1.Cells(L, 6).Value = ws2.Cells(i, 6).Value 'Je copie et colle les données de la colonne F suivant sa ligne
            Exit For 'je quitte la boucle L
          End If
        Next L
      Next i
    WB1.Save 'Je sauve le classeur Reference
    WB2.Close savechanges:=True 'Je sauve le classeur Prix et le ferme
End Sub

Carters d huile - Test Prix.xlsx (15,4 Ko)
Merci
et si je te met le dossier en un
ca ne serait pas plus simple, car je doit faire cette manip sur presque 200 dossiers avec la ligne a toute identique

Re
A tester
Carters d huile - Test Prix.xlsm (26,9 Ko)

Désolé de te déranger - est-ce que c’est possible de t’envoyer mon fichier complet de l’exemple envoyé car je n’arrive pas à le faire - le soucis c’est que le fichier est trop lourd pour l’envoyer par ici

Re,

Utilise ce lien pour le mettre en téléchargement
https://mon-partage.fr/

https://mon-partage.fr/f/pyy6JaCg/
voici le lien

Re,

C’est sur que si avais précisé que le fichier était important (+ de 37000 lignes), il fallait si mettre d’une autre façon
la macro n’est plus là même, et tu n’as pas précisé.
Je regarde cela pour que le résultat soit plus rapide et sans BUG demain matin

Re

A tester
https://mon-partage.fr/f/oMGDOjKc/

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.