Copie Valeurs d'autres Classeurs sans sauter de ligne

Bonjour,

Je dois créer une macro qui doit me permettre d'aller récupérer des valeurs à des adresses précises (ex: C34, H32,...) dans des classeurs excel différents mais ayant la même mise en page.

J'ai effectué de nombreuses recherches sur internet, notamment sur des topics similaires à mon problème.

J'ai ainsi pu rédiger quelques lignes, le programme fonctionne, il va me chercher les valeurs une à une dans les classeurs.

Mais, le soucis est que je n'arrive pas à lui faire sauter des lignes lors de la copie dans le classeur final.

Je m'explique:

Il va chercher dans Classeur1.Range(A1) puis copie dans ClasseurFinal.Range(A1).

Il va ensuite chercher dans Classeur2.Range(A1) et copie de nouveau dans ClasseurFinal.Range(A1).

Ce qui de facto supprime la valeur précédente (issue du Classeur1).

et ainsi de suite....

J'avoue être perplexe. Je me perd dans cette histoire de variable pour sauter une ligne à chaque copie dans le classeur.

Pourriez-vous m'aider?

Merci Zaf,

Ci-joint la macro;

15test-2.xlsm (12.14 Ko)

Bonjour

Essayes un truc de ce style

Classeur1.Range("A1").Copy ClasseurFinal.Range("A" & Rows.Count).End(xlUp).Offset(1, 0)

Sinon fournis ton fichier avec la macro

Bonsoir,

je viens de joindre le bon fichier excel.

Je ne comprends la ligne de code que tu me propose.

Pourrais-tu me l'expliquer? Je pratique vba que depuis maintenant 2 semaines.

Zaf

Bonjour

Zaf a écrit :

Je ne comprends la ligne de code que tu me propose.

C'est une réponse en fonction des infos que tu transmets

A tester

Sub Copie_valeurs()
Dim Ligne As Long
Dim Chemin As String, Name_File As String
Dim Ws As Worksheet

' Copie_valeurs Macro
' La Macro est rédigé ici avec une copie de la case E5 de la feuille A du classeur1 vers la case B6 du classeur final.
' L'idée étant de copier ensuite en B7 la case E5 de la feuille A du classeur2.

  Application.ScreenUpdating = False    ' Pas de rafraîchissement écran
  Set Ws = Sheets("Feuil1")             ' Feuille de recopie
  ' Recherche de la première ligne vide (au minimum cela sera la 6)
  Ligne = Application.Max(6, Ws.Range("B" & Rows.Count).End(xlUp).Row + 1)
  ' Répertoire contenant les fichiers à ouvrir
  Chemin = "Adresse_du_fichier_contenant_les_classeurs_où_sont_les_valeurs_qui_doivent_être copiées"
  ' Récupère un fichier
  Name_File = Dir(Chemin & "\*.xlsx")
  While Len(Name_File) > 0
    ' fichier existe alors on l'ouvre
    With Workbooks.Open(Name_File)
      ' On copie E5 dans la colonne B
      .Sheets("A").Range("E5").Copy Ws.Range("B" & Ligne)
      ' En colonne E on inscrit le nom du fichier ouvert
      Ws.Range("E" & Ligne) = Name_File
      ' Ligne de la prochaine copie
      Ligne = Ligne + 1
      ' Ferme le fichier sans enregistrer
      .Close savechanges:=False
    End With
    ' Fichier suivant
    Name_File = Dir
  Wend
End Sub

Bonjour Banzai64,

Je viens de rentrer ton code dans une macro. Il m'affiche:

Run-Time error "1004" Application-defined or object-defined error pour la ligne:

Ligne=Application.Max(6, Ws.Range("B")[...]

Je ne sais pas si cela va faire avancer le Schmilblick mais je compte utiliser mon programme sur un poste excel anglophone,.

En tout cas merci pour ton aide!!!

Zaf

Bonjour

Pas de raison particulière pour ce message d'erreur

Ce qu'il faut :

Le fichier en cause (celui qui à l'erreur)

2 fichiers de données

Sinon et bien je ne sais pas

Rechercher des sujets similaires à "copie valeurs classeurs sauter ligne"