Macro extraction de données à la suite [Résolu]

le_sablais

XLDnaute Nouveau
Bonjour à tous,

Je reviens vers vous car vous êtes toujours d'une aide précieuse pour la conception de mes fichiers excel.

Aujourd'hui je bloque sur la création d'une macro.

Contexte : J'ai un fichier avec une base de données que je remplis au fur et à mesure avec des fichiers que je reçois chaque semaine. Les fichiers que je reçois chaque semaine ont toujours la même forme.

Je souhaiterais donc créer une macro qui permettrait d'éviter de faire des copier-coller à la main (avec risque de mauvaise manipulation pour des utilisateurs peu habitués à l'outil Excel).

La macro permettrait alors, en sélectionnant tout le fichier à copier, de coller les données à la suite dans mon fichier de base, en enlevant les mises en formes inutiles du fichier que je reçois (ex : titre, cellules fusionnées...).

Si quelqu'un aurait une idée de code pour moi afin que je puisse avancer, ça fait deux jours que je bloque dessus.

Je vous joins 2 fichiers : le premier donne une idée de mon fichier de base où je compile toutes les données
le deuxième représente une base de données type que je reçois chaque semaine.

Merci d'avance à ceux qui se pencheront sur mon sujet

Le_sablais
 

Pièces jointes

  • fichier 1 MACRO EXTRACTION.xlsx
    41.7 KB · Affichages: 35
  • fichier 2.xlsx
    159.1 KB · Affichages: 30
  • fichier 2.xlsx
    159.1 KB · Affichages: 44
  • fichier 2.xlsx
    159.1 KB · Affichages: 32
Dernière édition:

titiborregan5

XLDnaute Accro
Re : Macro extraction de données à la suite

Bonjour le_sablais, le forum,

tu veux sélectionner "manuellement" ton fichier lorsque la macro te le propose?

Pour la plage à copier coller, il faut toujours commencer en ligne 4 et retirer la dernière ligne?

Un petit code, dis-nous si ça marche:
VB:
Sub recup_données()
nf = Application.GetOpenFilename("fichiers xls,*.xls*")

If Not nf = False Then
    Workbooks.Open Filename:=nf
    A = ActiveWorkbook.Name
   derligne = Workbooks(A).Sheets(1).Range("A65000").End(xlUp).Row - 1
    Workbooks(A).Sheets(1).Range("A5:m" & derligne).Copy ThisWorkbook.Sheets(1).Range("a65000").End(xlUp).Offset(1, 0)
    
    
    
    Workbooks(A).Close
End If

End Sub
 
Dernière édition:

le_sablais

XLDnaute Nouveau
Re : Macro extraction de données à la suite

Merci d'avoir répondu. Je testerai le code que tu m'as donné tout à l'heure.

Pour répondre à ta question, j'avais déjà réalisé une macro pour un autre fichier.

La méthode consistait à avoir les deux fichiers ouverts, je sélectionnais et copiais toute la plage de données du fichier que je recevais, je collais cette plage dans un onglet vide de mon fichier de base et là une macro s'activait (avec filtres élaborés) pour copier les données dans l'onglet désiré. Seulement avant je pouvais effacer les anciennes données. Ici je souhaite créer un historique au fur et à mesure sans effacer les données déjà présentes dans ma base.

Je ne sais pas si je me suis fait comprendre...

A vous lire

Le_sablais
 

le_sablais

XLDnaute Nouveau
Re : Macro extraction de données à la suite

J'ai testé le code sur un fichier d'exemple et il marche parfaitement !

Cependant sur mon fichier original, il fonctionne également mais il ajoute un très grand nombre de lignes vide entre les données déjà présentes et les nouvelles données extraites...
 

le_sablais

XLDnaute Nouveau
Re : Macro extraction de données à la suite

Oui je viens de vérifier, j'allais dire la même chose avant que tu répondes. Sur la droite de mon tableau j'ai des formules qui s'étendent à chaque fois que j'ajoute de nouvelles données, voilà pourquoi les lignes "vides" n'étaient pas si vide après tout.

en tout cas merci beaucoup de ton aide, ça va m'être très utilie pour la suite de mon projet.

A bientôt :)

Le_sablais
 

Discussions similaires

Réponses
10
Affichages
792
Réponses
9
Affichages
380
Réponses
28
Affichages
934

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla