XL 2013 Extraction de donnée vers un nouveau fichier Excel

jbsushi

XLDnaute Nouveau
Bonjour,

J'ai un tableau avec des informations sur des clients.
J'aimerais pouvoir faire une extraction des informations pour un client voulu et faire en sorte de le faire apparaître sur un autre fichier excel.
Etant novice en programmation VBA, je fais appel à votre aide !

Voici mon tableau :

Données client.jpg


Grâce au bouton "Tri", un Userform apparaît et me permet de sélectionner le client grâce à une Combobox (ComboBox1) et un bouton permet de le valider (CommandButton1).

Pourriez vous m'aider à réaliser le code me permettant de trier la plage de donnée pour le client voulu dans la combobox et de "re-créer" le tableau avec ces informations ?

Je reste à votre disposition pour toutes questions, merci d'avance !!

Ps: Aidez le padawan que je suis ou je sombrerais dans le coté obscur de la force ! Mouhahahaha

Jbsushi
 

Pièces jointes

  • Données_Client.xls
    59.5 KB · Affichages: 25
  • Données_Client.xls
    59.5 KB · Affichages: 29

thebenoit59

XLDnaute Accro
Re : Extraction de donnée vers un nouveau fichier Excel

Salut Jbsushi.
Je te propose une première idée, à toi de voir où veux-tu exactement le coller.
Et si tu souhaites sauvegarder le fichier directement ou non.
 

Pièces jointes

  • Données_Client.xls
    47 KB · Affichages: 26
  • Données_Client.xls
    47 KB · Affichages: 28

jbsushi

XLDnaute Nouveau
Re : Extraction de donnée vers un nouveau fichier Excel

Benoit je t'aime !
C'est vraiment super ce que tu as fait ! :)
Alors normalement, il n'y a pas besoin de le sauvegarder, mais ça peut changer.
Est il possible de sauvegarder le fichier avec un nom tel que: Fichier_"Client"_"Datedujour".xlx par exemple sur le bureau ?
 

jbsushi

XLDnaute Nouveau
Re : Extraction de donnée vers un nouveau fichier Excel

Je rencontre une erreur lorsqu'il veut l'enregistrer sur le bureau, voici le message:
Erreur.png
J'avais fait cet essais en triant pour les Edouards.

Cela viens peut-être du nom d'enregistrement, les "\" ne sont peut être pas acceptés.
 

Pièces jointes

  • Erreur.png
    Erreur.png
    26.1 KB · Affichages: 27

thebenoit59

XLDnaute Accro
Re : Extraction de donnée vers un nouveau fichier Excel

Dans le code, remplace la ligne NomFichier par :
Code:
NomFichier = "Fichier_" & Client & "_" & Format(Date, "dd-mm-yyyy")
J'espère que ça ira.
Sur ma version la date s'enregistre automatiquement en dd-mm-yyyy
 

jbsushi

XLDnaute Nouveau
Re : Extraction de donnée vers un nouveau fichier Excel

Bonjour,

J'ai repris le code du tableur pour le réadapter et l'utiliser sur celui-ci.
Ce pendant, je n'arrive pas à le faire fonctionner, pourrais tu y jeter un oeil ? :/
Code:
Private Sub CommandButton1_Click()
Dim Client As String, DernièreLigne As Long, NomFichier As String, objShell  As Object
 
Client = ComboBox1.Text 'Valeur choisie dans la liste
DernièreLigne = Cells(Rows.Count, 5).End(xlUp).Row 'Détermine la dernière ligne en colonne E
NomFichier = "Fichier_" & Client & "_" & Date
 
Range("A6:T7").AutoFilter Field:=2, Criteria1:=Client 'On trie le tableau en fonction du nom du client.
Range("A6:T" & DernièreLigne).Copy
ActiveSheet.AutoFilterMode = False
Unload Me
 
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False

Et voici le tableur en question: Regarde la pièce jointe New Liste Reserve.xls

Merci d'avance ! :)
 

thebenoit59

XLDnaute Accro
Re : Extraction de donnée vers un nouveau fichier Excel

C'est normal que ça ne fonctionne pas.
En effet les tris ne sont pas les mêmes à effectuer.
J'ai également modifié tes renvois à la ligne pour la combobox, c'est assez embêtant pour le filtre (voir Feuil2).
Maintenant tout devrait fonctionner.

Code:
Private Sub CommandButton1_Click()
Dim Client As String, DernièreLigne As Long
'Dim NomFichier As String, objShell As Object 'Variables inutiles, nous les désactivons

Client = ComboBox1.Text 'Valeur choisie dans la liste
DernièreLigne = Cells(Rows.Count, 10).End(xlUp).Row 'Détermine la dernière ligne en colonne J
'NomFichier = "Fichier_" & Client & "_" & Date 'Inutile pour le moment

Range("A7:T7").AutoFilter Field:=10, Criteria1:=Client 'On trie le tableau en fonction de la colonne J
Range("A7:T" & DernièreLigne).Copy 'On copie les lignes filtrées
ActiveSheet.AutoFilterMode = False 'On désactive le tri
Unload Me 'On décharge l'userform

Workbooks.Add 'On crée un nouveau classeur
ActiveSheet.PasteSpecial xlPasteColumnWidths 'On colle la largeur des colonnes
ActiveSheet.Paste 'On colle le reste
Application.CutCopyMode = False 'On décharger le presse papier

End Sub
 

jbsushi

XLDnaute Nouveau
Re : Extraction de donnée vers un nouveau fichier Excel

Je viens de tester le code, il marche super pour les "DGM" par contre pour les autres, il ne copie que l'entête.
Il faut peut-être que je change le format des "fournisseurs" ?
 

thebenoit59

XLDnaute Accro
Re : Extraction de donnée vers un nouveau fichier Excel

Oui c'est ça, j'ai oublié de te le préciser, mais je l'avais fais de mon côté ...
Pour aller plus vite, tu peux utiliser ce code pour remplacer en une seule fois.
Code:
Sub RemplacerValeurs()
For Each cell In Range("J8:J" & Cells(Rows.Count, 10).End(xlUp).Row)
    If UCase(cell.Value) Like "*AXEAU" Then cell.Value = "DGM AXEAU"
    If UCase(cell.Value) Like "*INEO" Then cell.Value = "DGM INEO"
    If UCase(cell.Value) Like "*CIAT" Then cell.Value = "DGM CIAT"
Next cell
End Sub
 

thebenoit59

XLDnaute Accro
Re : Extraction de donnée vers un nouveau fichier Excel

Tu peux mais ça la relancera à chaque fois, et donc de la perte de temps.
Plutôt l'ajouter dans un module externe et la lancer une seule fois, sur ton fichier complet.
Et quand tu ajouteras des lignes, note juste directement correctement le code.
 

jbsushi

XLDnaute Nouveau
Re : Extraction de donnée vers un nouveau fichier Excel

D'accord, super, j'arrive à le faire marcher !
J'ai un tout tout dernier soucis ! Après j'arrête promis !

Dans les fournisseurs, il y en a qui sont écrit tel que:
Code:
DGM
INEO
AXEAU
Par exemple, comment je peux faire pour les transformer en:
Code:
DGM INEA AXEAU

en réutilisant ton code:
Code:
If UCase(cell.Value) Like "*CIAT" Then cell.Value = "DGM CIAT"

Merci d'avance ! :)
 

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 083
Membres
103 114
dernier inscrit
sylvainb6969