Macro extraction de données à la suite
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
Bonjour
Un essai.
En espérant avoir plus de chance d'avoir un retour que lors de ma dernière proposition où, pourtant, Jean-Eric était intervenu :
https://forum.excel-pratique.com/excel/previsions-stock-avec-historique-t53853.html
Bye !
Bonjour, et merci d'avoir répondu.
Ton code fonctionne très bien sur les fichiers exemple, mais je n'arrive pas à l'adapter sur mon fichier de base, je ne m'y connais pas du tout en userform... Par ailleurs, est-il possible de mettre le bouton d'activation de macro sur un autre onglet ?
Par ailleurs, un ami m'a envoyé le code suivant : il fonctionne bien sur un petit fichier exemple mais sur mon fichier original, il ajoute un grand nombre de lignes vides entre les données déjà présentes et les nouvelles données extraites. Si jamais quelqu'un connait la faille dans ce code.
Avoir ton code gmb et celui ci-dessous pourrait m'être très utile pour la suite
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
A vous lire
Le_sablais
Au temps pour moi, j'ai trouvé la faille. Mon fichier de base est un tableau, avec des formules à droite des données extraites, les formules s'étaient étendues, d'où les lignes "vides" pas si "vides" que ça au final.
En tout cas merci beaucoup d'avoir pris le temps de te pencher sur mon sujet . Ta solution va m'être d'une grande aide, j'ai compris comment ça fonctionnait !
et désolé pour l'ancien post, j'étais sûr d'avoir répondu, mais j'ai dû basculer directement sur mon fichier en voyant la réponse.
Encore merci et à bientôt
le_sablais
Tu écris :
Ton code fonctionne très bien sur les fichiers exemple, mais je n'arrive pas à l'adapter sur mon fichier de base
Alors joins ton fichier de base !
...Si jamais quelqu'un connait la faille dans ce code.
Pour que cet autre code fonctionne correctement, une solution (parmi d’autres) :
Supprime la mise en forme «Tableau » :
• Clic sur une cellule du tableau
• Clic sur « Outil de tableau » dans le bandeau
• Clic sur « Convertir en plage » dans le pavé « Outils » du bandeau
• Repondre oui à la question posée
Puis lancer la macro
Bye !
Bonjour,
Pour mon fichier de base je ne peux pas le joindre, il pèse 8Mo.
Et pour mon tableau, je ne converti pas en plage car j'ai besoin que mes formules à droite des données s'étendent d'elles mêmes, sachant que j'ajoute environ 2000 lignes en plus par jour dans mon fichier.
Mais tout va bien je m'en suis sorti
A bientôt
Le_sablais