Macro d'extraction de données

  • Initiateur de la discussion Initiateur de la discussion sparx971
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

sparx971

Guest
Bonjour tout le monde

Voila je suis stagiaire et je bosse actuellement sur un dossier pour ma boite.

Je dois créer une macro me permettant d’automatiser une extraction de données d’un fichier excel vers une base de données excel aussi.
En gros je reçois des fichiers excel (1 fichier correspondant à un fournisseur) avec plusieurs prix qui correspondent à différents profils de métiers, je dois extraire ces prix et les copier dans une base de données. Dans cette base, chaque ligne correspondra alors à un fournisseur et chaque colonne à un profil.
La ou je bloque, c'est comment, après avoir copier une première ligne qui correspond à un fournisseur, faire en sorte que la macro passe à la ligne suivante pour un autre fournisseur dans la nouvelle base de données.

Je sais pas si j'ai été suffisamment clair, étant débutant j'ai un peu de mal à expliquer concrètement le problème.

En tout cas si quelqu'un pouvait m'aider, ce serait vraiment sympa car je galère depuis un certain temps dessus;

Mercii
 
Re : Macro d'extraction de données

Bonsoir sparx971,

En admettant que ta colonne de référence soit en A, voici comment déterminer le numéro de la première ligne vide dans cette colonne :

Code:
Private Sub LigneASuivre()
Dim Lgn As Long

Lgn = ActiveSheet.Range("A" & ActiveSheet.Cells.Rows.Count).End(xlUp).Row + 1

End Sub

Il ne te reste plus qu'à utiliser cette variable pour recopier tes données sur la bonne ligne.

Espérant avoir répondu.

Cordialement.
 
Re : Macro d'extraction de données

Bonjour et bienvenue sur le forum

Le code suivant permet de connaître le premier numéro de ligne vide.
Sheets("Feuil1").Range("A" & Sheets("Feuil1").Rows.Count).End(xlUp).Row +1

Pour passer à la ligne suivante il faut utiliser une boucle dans la macro : boucle "for next" ou "Do Loop sans oublier la sortie de la boucle"

JP
 
Dernière édition:
Re : Macro d'extraction de données

Merci pour vos réponses

Le soucis c'est que je ne m'y connais vraiment pas beaucoup en programmation, et encore moins VBA. Du coup, bien que vos propositions fonctionnent surement, je ne sais pas du tout comment les intégrer dans ma macro.

Pour l'instant j'ai ça:


Sub Macro1()
'
' Macro1 Macro
' Auto
'
' Touche de raccourci du clavier: Ctrl+m
'
Range("I6:I10").Select
Selection.Copy
Sheets("BDD").Select
Range("C2").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Windows("Tarifs - Profil 04 Essai MAcro.xlsx").Activate
Windows("Outil Automatisation 01.xlsx").Activate
Sheets("Transfert DP").Select
Range("J6:J10").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("BDD").Select
Range("C3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Sheets("Transfert DP").Select
Range("K6:K10").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("BDD").Select
Range("C4").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub


Grace à ce code, la macro me copie mes bons chiffres dans la première ligne (fournisseur 1)

C'est ensuite que le problème arrive, quand je reçois un autre fichier et que je veux alimenter la même base de donnée, mais pour une seconde ligne (fournisseur 2) et ainsi de suite jusqu'a N lignes pour N fournisseurs (Ils risquent d'être assez nombreux, d'ou l'automatisation), je ne sais pas comment faire en sorte que la macro me copie les chiffres du fournisseur 2 dans la ligne 2 de ma nouvelle base de donnée (fiou, vous me suivez?)

Donc je sais pas si mon code est bon, si je m'y prends bien en procédant de la sorte etc
 
Re : Macro d'extraction de données

RE :

Puisque ton code actuel semble fonctionner (bien qu'il me paraisse simplifiable), je vais simplement te proposer ceq quelques modifications :

Code:
Sub Macro1()
'
' Macro1 Macro
' Auto
'
' Touche de raccourci du clavier: Ctrl+m
'
Range("I6:I10").Select
Selection.Copy
Sheets("BDD").Select
Range("C" & ActiveSheet.Rows.Count.End(xlUp).Row + 1).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Windows("Tarifs - Profil 04 Essai MAcro.xlsx").Activate
Windows("Outil Automatisation 01.xlsx").Activate
Sheets("Transfert DP").Select
Range("J6:J10").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("BDD").Select
Range("C" & ActiveSheet.Rows.Count.End(xlUp).Row + 1).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Sheets("Transfert DP").Select
Range("K6:K10").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("BDD").Select
Range("C" & ActiveSheet.Rows.Count.End(xlUp).Row + 1).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub

Cordialement.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
699
Retour