RECUPERATION DES DONNEES FICHIERS .XLS
Dernière réponse : dans Programmation
bonjour
j'ai stockés mes factures que j'ai nommés (FACT 1.xls, FACT 2.xls,.......FACT N.xls)
dans un dossier nommé 'FACTURES'.
comment dois-je récupérer les noms des clients qui se trouvent dans les cases B3 de chaque facture et les regrouper par ordre (1,2,3.....N)
merci de votre aide
j'ai stockés mes factures que j'ai nommés (FACT 1.xls, FACT 2.xls,.......FACT N.xls)
dans un dossier nommé 'FACTURES'.
comment dois-je récupérer les noms des clients qui se trouvent dans les cases B3 de chaque facture et les regrouper par ordre (1,2,3.....N)
merci de votre aide
Autres pages sur : recuperation donnees fichiers xls
Lassé par la pub ? Créez un compte
lasioule a dit :
bonjourj'ai stockés mes factures que j'ai nommés (FACT 1.xls, FACT 2.xls,.......FACT N.xls)
dans un dossier nommé 'FACTURES'.
comment dois-je récupérer les noms des clients qui se trouvent dans les cases B3 de chaque facture et les regrouper par ordre (1,2,3.....N)
merci de votre aide
MERCI 'ZEB' LE TITRE EST CHANGE.
Re ZEB, merci pour les conseils.
Voilà mes factures sont classées de 1 à n+1 (FACT 1.xls, FACT 2.xls,.......FACT N.xls) dans un dossier nommé : FACTURES.
Les noms des clients se trouvent dans chaque feuilles (FACT N.xls) dans les cases B3.
mon problème, j'ai crée un autre classeur utilisant une feuille où j'ai rentré plusieurs données et j'aimerais créer une colonne pour importer les noms des clients qui logent ds la case B3 de chaque facture (qui se trouvent dans le dossier : FACTURES)
Y a t-il un moyen avec la fonction RECHERCH ou il faut créer une macro?
Encore une fois Merci ZEB http://img.infos-du-net.com/forum/icones/tongue.gif
Voilà mes factures sont classées de 1 à n+1 (FACT 1.xls, FACT 2.xls,.......FACT N.xls) dans un dossier nommé : FACTURES.
Les noms des clients se trouvent dans chaque feuilles (FACT N.xls) dans les cases B3.
mon problème, j'ai crée un autre classeur utilisant une feuille où j'ai rentré plusieurs données et j'aimerais créer une colonne pour importer les noms des clients qui logent ds la case B3 de chaque facture (qui se trouvent dans le dossier : FACTURES)
Y a t-il un moyen avec la fonction RECHERCH ou il faut créer une macro?
Encore une fois Merci ZEB http://img.infos-du-net.com/forum/icones/tongue.gif
A mon avis, utiliser la fonction RECHERCH ne suffira pas. Etant donné que tu dois rechercher le nom chaque fois dans un fichier différent (qu'il faudra donc ouvrir, et par la même occasion fermer aussi). Il faudra donc à mon avis obligatoirement passer par une macro. En tout cas, cela me semble la solution la plus simple pour moi.
Sans te donner directement la réponse, utilise l'enregistreur de macro pour importer un seul nom.
En gros tu lances l'enregistreur et ensuite tu procèdes à toutes les étapes nécessaire pour importer le nom, à savoir ouvrir le fichier Fact1.xls, copier le nom dans la colonne que tu souhaites, fermer le fichier Fact1.xls et enfin arrêter l'enregistreur de macro. Ensuite tu reviens avec le code qu'il a généré en le recopiant sur ce forum (n'oublie pas de l'intercaler entre les balises).
Et on regardera ensemble ce qu'il faudra modifier pour qu'il puisse faire la même chose avec toutes tes factures.
Sans te donner directement la réponse, utilise l'enregistreur de macro pour importer un seul nom.
En gros tu lances l'enregistreur et ensuite tu procèdes à toutes les étapes nécessaire pour importer le nom, à savoir ouvrir le fichier Fact1.xls, copier le nom dans la colonne que tu souhaites, fermer le fichier Fact1.xls et enfin arrêter l'enregistreur de macro. Ensuite tu reviens avec le code qu'il a généré en le recopiant sur ce forum (n'oublie pas de l'intercaler entre les balises).
Et on regardera ensemble ce qu'il faudra modifier pour qu'il puisse faire la même chose avec toutes tes factures.
Merci pour la réponse,
Le problème c'est l'ouverture et fermeture de chaque facture (il y en a 1800).
Pouvez me donner le code pour la macro qui fait cette cherche. J'essayerais une seule facture. Merci
en suivant votre démarche, suite à l'essai pour 2 factures ci joint l'enregistrement de la macro:
Le problème c'est l'ouverture et fermeture de chaque facture (il y en a 1800).
Pouvez me donner le code pour la macro qui fait cette cherche. J'essayerais une seule facture. Merci
en suivant votre démarche, suite à l'essai pour 2 factures ci joint l'enregistrement de la macro:
Sub import()
' Macro enregistrée le 16/09/2010 par la sioule
'
'
Range("D2").Select
Selection.Copy
Windows("recap.xls").Activate
ActiveSheet.Paste
Windows("FAC1.xls").Activate
ActiveWindow.Close
Range("A8").Select
Selection.Copy
Windows("recap.xls").Activate
Range("D3").Select
ActiveSheet.Paste
Windows("FAC2.xls").Activate
ActiveWindow.Close
End Sub
as tu la possibilité de faire le chemin inverse !
a la place d'aller chercher l'info de chaque fichier c'est la facture qui doit ecrit dans un fichier la valeur de ta cellule dans un fichier qui se nomera client et qui vas centralisé tous tes client
PS : fait gaf de bien crée une nouvelle ligne pour chaque client !
a+
a la place d'aller chercher l'info de chaque fichier c'est la facture qui doit ecrit dans un fichier la valeur de ta cellule dans un fichier qui se nomera client et qui vas centralisé tous tes client
PS : fait gaf de bien crée une nouvelle ligne pour chaque client !
a+
Bonsoir et merci de ton aide
mais les factures sont enregistrées de (FACT 1.xls à FACT 1802.xls) je me vois mal à reprendre toute les factures une par une, afin de sortir à chaque les noms des clients qui se trouvent dans B3 et les exporter sur une colonne d'une autre feuille.
merci de m'indiquer si je fais le test sur une facture et comment faire une boucle de recherche sur les autres facture sans que je les ouvre toutes.
cordialement
mais les factures sont enregistrées de (FACT 1.xls à FACT 1802.xls) je me vois mal à reprendre toute les factures une par une, afin de sortir à chaque les noms des clients qui se trouvent dans B3 et les exporter sur une colonne d'une autre feuille.
merci de m'indiquer si je fais le test sur une facture et comment faire une boucle de recherche sur les autres facture sans que je les ouvre toutes.
cordialement
Voilà de quoi te dépanner. Bon C'est pas du grand art, mais en principe cela fonctionne. Je laisse au bon soin de Zeb d'améliorer mon code pour faire plus "pro" :-)
Private Sub ImporterNom() Dim i As Integer Dim Chemin, F1, F2 As String Chemin = "C:\fichiers\excel\" ' à remplacer par le rep où se trouve tes factures F1 = "Feuil1" ' à remplacer par le nom de la feuille où est stocké le nom que tu vx copier F2 = "Feuil1" ' à remplacer par le nom de la feuille où tu va écrire le nom ds le fichier Recap.xls For i = 1 To 1802 Workbooks.Open Filename:=Chemin & "fact " & i & ".xls" Workbooks("recap.xls").Sheets(F2).Cells(i, 1) = Workbooks("fact " & i & ".xls").Sheets(F1).Range("B3") Application.DisplayAlerts = 0 Windows("fact " & i & ".xls").Close Application.DisplayAlerts = 1 Next End Sub
Bonjour et merci pour ton aide beru. ci joint le code avec les modifications:
Le chemin est correcte mais s'abloque au niveau de la ligne:
Merci pour toi ....Au secours c'est presque
Private Sub ImporterNom()
Dim i As Integer
Dim Chemin, F1, F2 As String
Chemin = "C:\Users\Desktop\GCP10\FACTURE 2010\"
' à remplacer par le rep où se trouve tes factures
F1 = "FACTURE" ' à remplacer par le nom de la feuille où est stocké le nom que tu vx copier
F2 = "FEUIL1" ' à remplacer par le nom de la feuille où tu va écrire le nom ds le fichier Recap.xls
For i = 1 To 1802
Workbooks.Open Filename:=Chemin & "FACT " & i & ".xls"
Workbooks("recap.xls").Sheets(F2).Cells(i, 1) = Workbooks("FACT " & i & ".xls").Sheets(F1).Range("B3")
Application.DisplayAlerts = 0
Windows("FACT " & i & ".xls").Close
Application.DisplayAlerts = 1
Next
End Sub
Le chemin est correcte mais s'abloque au niveau de la ligne:
Workbooks.Open Filename:=Chemin & "FACT " & i & ".xls"
Merci pour toi ....Au secours c'est presque
Dans ton exemple, tu as indiqué que le nom des fichiers étaient Fact 1.xls (à savoir avec un espace entre le Fact et le 1)
si ce n'est pas le cas il faut bien entendu le retirer ce qui devient :
si ce n'est pas le cas il faut bien entendu le retirer ce qui devient :
Private Sub ImporterNom() Dim i As Integer Dim Chemin, F1, F2 As String Chemin = "C:\Users\Desktop\GCP10\FACTURE 2010\" F1 = "FACTURE" F2 = "FEUIL1" For i = 1 To 1802 Workbooks.Open Filename:=Chemin & "FACT" & i & ".xls" Workbooks("recap.xls" ).Sheets(F2).Cells(i, 1) = Workbooks("FACT" & i & ".xls" ).Sheets(F1).Range("B3" ) Application.DisplayAlerts = 0 Windows("FACT" & i & ".xls" ).Close Application.DisplayAlerts = 1 Next End Sub
Salut Béru,
C'est mal mal dis donc
Juste une petite chose, pour ne pas avoir à se fier au nom des fenêtres, utilise des variables. Et étudie les paramètres de Close() pour ne pas avoir à te prendre la tête avec des DisplayAlerts :
Autre chose, ce programme ne fonctionne plus si on a pas exactement 1802 fichiers FACT. C'est un peu dommage.
Plutôt qu'un For, je propose un Dir() :
Qu'en pensez-vous ?
C'est mal mal dis donc
Juste une petite chose, pour ne pas avoir à se fier au nom des fenêtres, utilise des variables. Et étudie les paramètres de Close() pour ne pas avoir à te prendre la tête avec des DisplayAlerts :
Dim wk_recap As Workbook Dim wk_facture As Workbook ' // La définition de la macro doit être dans recap.xls Set wk_recap = ThisWorkbook ... Set wk_facture = Workbooks.Open(Chemin & "FACT" & i & ".xls") wk_recap.Worksheets("FACTIRE").Cells(i, 1) = wk_facture.Worksheets(1).Range("B3" ) wk_facture.Close False
Autre chose, ce programme ne fonctionne plus si on a pas exactement 1802 fichiers FACT. C'est un peu dommage.
Plutôt qu'un For, je propose un Dir() :
Private Sub ImporterNom() Dim cell_recap As Range Dim wk_facture As Workbook Dim fname As String ' // La définition de la macro doit être dans recap.xls Set cell_recap = ThisWorkbook.Worksheets("FACTURE").Range("A1") On Error Resume Next fname = Dir("C:\Users\Desktop\GCP10\FACTURE 2010\FACT*.xls") Do While fname <> "" Set wk_facture = Workbooks.Open(fname) If Not wk_facture Is Nothing Then cell_recap.Value = wk_facture.Worksheets(1).Range("B3" ) Set cell_recap = cell_recap.Offset(1) wk_facture.Close False End If fname = Dir Loop On Error GoTo 0 End Sub
Qu'en pensez-vous ?
Quand on ne précise rien, le VB plante lamentablement en cas d'erreur.
Pour éviter les fichiers qui ne s'ouvrent pas, ou ce genre de chose, je passe à la suite en cas de problème (Resume Next). A l'issue, je remets le système dans l'état dans lequel il était : On Error GoTo 0.
RTFM !!!!
Ah ça, j'en use et j'en abuse. J'en mets partout. Et t'as vu, pas de variable inutile, de double indentation dans la feuille source et dans la feuille cible.
Le cas classique : Copier la zone A1:A10 de la feuille 1 vers la feuille 2 si on a 1 dans la colonne B
Beurk. J'aime les objets, moi
Je trouve cela tellement plus élégant. La beauté est dans le fait que rien n'est recalculé plus d'une fois. De là découlent des macros très rapides. Et en VB, ce n'est pas une petite économie
Pour éviter les fichiers qui ne s'ouvrent pas, ou ce genre de chose, je passe à la suite en cas de problème (Resume Next). A l'issue, je remets le système dans l'état dans lequel il était : On Error GoTo 0.
Citation :
l'astuce du close que je ne connaissais pasCitation :
au poil l'utilisation de l'offset. Le cas classique : Copier la zone A1:A10 de la feuille 1 vers la feuille 2 si on a 1 dans la colonne B
Dim i As Long Dim j As Long j = 1 For i = 1 To 10 ' // Tant qu'à faire du code pas beau, j'utilise Range au lieu de Cells ;-) If Feuil1.Range("B" & i) = 1 Then Feuil2.Range("A" & j) = Feuil1.Range("A" & i) j = j + 1 End If Next
Beurk. J'aime les objets, moi
Dim cell_source As Long Dim cell_target As Long Set cell_target = Feuil2.Range("A1") For cell_source In Feuil1.Range("A1:A10") If cell_source.Offset(0, 1).Value = 1 Then cell_target.Value = cell_source.Value Set cell_target = cell_target.Offset(1, 0) End If Next
Je trouve cela tellement plus élégant. La beauté est dans le fait que rien n'est recalculé plus d'une fois. De là découlent des macros très rapides. Et en VB, ce n'est pas une petite économie
Bonsoir beru et encore merci pour votre réponse.
Ci joint un fragement du code qui bloque,
j'ai fait un essai pour facture (i=1 to i=2) mais en vain.
Ci joint un fragement du code qui bloque,
j'ai fait un essai pour facture (i=1 to i=2) mais en vain.
Private Sub ImporterNom()
Dim cell_recap As Range
Dim wk_facture As Workbook
Dim fname As String
' // La définition de la macro doit être dans recap.xls
Set cell_recap = ThisWorkbook.Worksheets("FACTURE" ).Range("A1" )
On Error Resume Next
fname = Dir("C:\Users\Desktop\GCP10\FACTURE 2010\FACT*.xls" )
Do While fname <> ""
Set wk_facture = Workbooks.Open(fname)
If Not wk_facture Is Nothing Then
cell_recap.Value = wk_facture.Worksheets(1).Range("B3" )
Set cell_recap = cell_recap.Offset(1)
wk_facture.Close False
fname = Dir
Loop
On Error GoTo 0
End Sub
Bjr,
je viens de voir votre discussion et je pense que vous pouvez m'aider.
j'ai un fichier1.xls qui ce créer chaque jours à l'aide d'un logiciel, et j'ai un autre fichier2.xlsx qui est ma base de donnée ou je me permet de faire des calcul bien définit etc...
Sans les données qui se trouvent dans le fichier1, le fichier2 ne sert à rien!
J'aimerais donc récupérer les données du fichiers1.
Pour cela je n'ai pas fait comme vous j'ai adressé une formule dans ma cellule qui me permettrais de récuperer les données si les fichier1 s'ouvrent lors de leurs création!!!!! et comme il ne doit pas avoir d'action manuelle dans mon logiciel il fo que cela se fasse automatiquement.
Ma formule dans les cellules du fichier 2:
='C:\Users\test\[RGEnergie201101021123.xls]feuil1'!C5
Comment je pourrais ouvrir des fichiers qui n'existe pas encore avec les macros ou le vba?
je viens de voir votre discussion et je pense que vous pouvez m'aider.
j'ai un fichier1.xls qui ce créer chaque jours à l'aide d'un logiciel, et j'ai un autre fichier2.xlsx qui est ma base de donnée ou je me permet de faire des calcul bien définit etc...
Sans les données qui se trouvent dans le fichier1, le fichier2 ne sert à rien!
J'aimerais donc récupérer les données du fichiers1.
Pour cela je n'ai pas fait comme vous j'ai adressé une formule dans ma cellule qui me permettrais de récuperer les données si les fichier1 s'ouvrent lors de leurs création!!!!! et comme il ne doit pas avoir d'action manuelle dans mon logiciel il fo que cela se fasse automatiquement.
Ma formule dans les cellules du fichier 2:
='C:\Users\test\[RGEnergie201101021123.xls]feuil1'!C5
Comment je pourrais ouvrir des fichiers qui n'existe pas encore avec les macros ou le vba?
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumComment récuperer fichiers xls cryptés
- ForumComparer 2 fichiers xls
- ForumRecuperation donneés fichiers apres formatage
- ForumReparer fichiers .xls corrompus
- ForumR lecture de fichiers .xls
- ForumHelp, recuperation de données mac
- ForumComparatif logiciel recuperation données
- ForumExporter données txt vers xls
- ForumRécupération de données via fichiers binaire
- ForumFichier ini récupération de données
- Voir plus
