Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème d'extration de données...

3 réponses
Avatar
Sylvie PARADIS
Bonjour,



J'ai un problème d'extraction de données avec Excel que je n'arrive pas à
résoudre. J'ai été visiter EXCELABO mais je ne vois toujours pas comment
faire alors je pose ma question si je peux trouver de l'aide:



Je reçois (à vrai dire j'enregistre des fichiers .lst sur une disquette à
partir d'un serveur qui ne nous appartiens pas (sous-traitance) tous les
jours le fichier client dont nous avons traités les commandes la veille,
pour en faire des stats sur Excel. Le problème est que ce fichier et tous
les jours de plus en plus volumineux et je voudrais donc savoir s'il y a
possibilité d'en extraire ses données en automatisant.



J'ai réussie à extraire les données de la disquette au PC de façon
automatique comme ceci:



Le nom de dossier ou se trouvent les données change tous les jours et porte
le nom de la date du traitement. Par exemple le dossier aujourd'hui
s'appelle 13122004. Donc le fichier étant traité toujours le lendemain, j'ai
placé la date du jour -1 dans une variable.



* 1 module par macro (je préfère pour quand j'y retourne plus tard...plus
visuel et plus parlant)
* Il y a 3 champs dont: code client, nom client et moyen de paiement
* Je dois donc faire des stats sur les moyens de paiements clients(moyen de
paiement, fréquence etc.)
* Le fichier se présente comme ci-après:
* 1 ligne avec le code client
* 1 ligne avec le nom client
* 1 ligne avec le moyen de paiement
Ensuite, il y a 2 lignes vides et ainsi de suite de façon régulière) Je dois
en suite supprimer les deux premiers caractères des ligne (avec les
fonctions de texte nbcar etc.)
Jusque là, pas de problème et, j'ai avec le temps optimisée de cette façon
(vérification de la présence du dossier sur la disquette, historique auto
avec création du nom de fichier et le traitement de sera pas difficile non
plus...tout est prêt)
Je ne suis pas du genre à me décourager mais, ça fait quand même quelques
mois que je travaille là dessus à temps perdu (à la maison)
Je souhaite au moins savoir si c'est possible d'extraire ces données et de
les ranger dans trois colonnes distinctes et adjacentes.
J'ai fais plusieurs essais (à vrai dire de nombreux) et j'y arrive seulement
quand les données sont
disposées dans trois colonnes différentes mais de la façon décrite plus
haut. Je continue à croire qu'avec les fonctions de recherche verticale et
horizontale c'est possible mais sinon, j'aimerais arrêter de chercher pour
rien.
Quelqu'un peut-il m'aider (au moins à me dire si c'est possible, pour le
reste je finirai bien par trouver...j'ai Le grand livre de Micro application
d'Excel mais ça ne fait pas tout et, encore moins toute seule)



Je vous remercie d'avance.



Sylvie




*********************************************************



Sub DateDeTraitement()
Dim NomDossier As String
NomDossier= Format(Date - 1, "dd/mm/yyyy")
Sheets("CLIENTS").Select
Range("B2").Select
ActiveCell.Value = NomDossier (pour insérer automatiquement la date de
traitement dans la cellule B2 de la feuille "CLIENTS")
End Sub



Et là, pour enregistrer automatiquement après traitement:



**********************************************************



Sub Enregistrer()



'Enregistre le document automatiquement dans le dossier
C:\AGCE\EXPLOITATION\StatsClients avec comme préfixe "StatsClients_" suivi
de "FormatDate" (jj-mm)



Dim NomDossier As String
'Déclaration la variable que je nomme "NomDossier"comme chaine de caractères
Dim Prefixe As String
'Déclaration la variable que je nomme "Prefixe" comme chaine de caractères
Dim Extension As String
'Déclaration la variable que je nomme "Extension" comme chaine de caractère
Count = Len(ActiveWorkbook.Name)
Name = Left(ActiveWorkbook.Name, Count - 4)
NomDossier = Format(Date - 1, "dd-mm")
'Voici le format de la date (La variable "NomDossier" - 1 donc la date de la
veille) jour-mois
Prefixe = "StatsClients_"
'Voici le préfixe du fichier personnalisé
Extension = ".xls"
'Voici l'extension du fichier
ChDir "C:\AGCE\EXPLOITATION\StatsClientss-HISTORIQUE"
'Là, c'est le chemin du dossier dans lequel j'enregistre le fichier...
ThisWorkbook.SaveCopyAs Filename:=Prefixe & DateDuJour & Extension
End Sub




**************************************************************
J'avais oubliée le début:
Comme ce n'est pas encore tout à fait terminé, j'ai imaginée 1 seule macro
pour le traitement qui devrait ressembler à ça (ça marche)



Sub Demarrage()
If Exist = "A:\JOUR" Then (le dossier 13122004 se trouve dans le dossier
"JOUR")
Dialogue.Caption = "Progression en cours..."
Dialogue.Height = 82
Dialogue.Width = 221
Application.Visible = False
Dim NomDossier As String
NomDossier= Format(Date - 1, "dd/mm/yyyy")
Sheets("CLIENTS").Select
Range("B2").Select
ActiveCell.Value = NomDossier
Application.Run "StatsClients.xls!NomDeLaMacro1"
Application.Run "StatsClients.xls!NomDeLaMacro2"
Application.Run "StatsClients.xls!NomDeLaMacro3"
End Sub



Et petit à petit, je testerai la présence de la disquette etc. (c'est pas
trop difficile)



Merci à ceux qui voudront bien me dire si c'est possible.



Sylvie

3 réponses

Avatar
Trirème
Bonjour,
Il y aura sûrement quelqu'un pour écrire une boucle de lecture et recopie,
dans une macro...
Cependant j'ai déjà en magasin une formule qui me permet de temps en temps
de résoudre des problèmes ressemblant à celui évoqué ci-dessous.
Je récupère des données d'une plage, appelons la "ZONE", et les redistribue
dans une plage de taille différente, appelons la "DESTINATION". DESTINATION
contient au moins autant de cellules que ZONE. Les dimensions peuvent être
quelconques, L x C ou 1 x C ou L x 1 (Jusqu'à l'absurbe, on peut faire une
transposition : 1 x N vers N x 1)
Je peux ainsi récupérer des données contenues dans une seule colonne (dont
les lignes se répètent cycliquement... par 5 par exemple) et les distribuer
dans une plage de 5 colonnes.
1) Je donne des noms aux plages, c'est plus simple pour écrire les formules.
Les plages sont censées être dans le même classeur.
2) Le choix de DESTINATION dépend de la répartition souhaitée
3) Dans chacune des cellules de DESTINATION je copie la formule suivante :
=INDEX(ZONE;ENT((COLONNE()-COLONNE(DESTINATION)+(LIGNE()-LIGNE(DESTINATION))
*COLONNES(DESTINATION))/COLONNES(ZONE))+1;MOD((COLONNE()-COLONNE(DESTINATION
)+(LIGNE()-LIGNE(DESTINATION))*COLONNES(DESTINATION));COLONNES(ZONE))+1)
4) On copie après les données en valeur, on ne garde que les colonnes
intéressantes (3 par exemple)

Cette formule est lourde mais elle n'impose pas que ZONE ou DESTINATION
soient dans le coin supérieur gauche d'une feuille. A ce titre elle est
simplifiable.

Sinon j'ai une solution en passant par WORD... Je la tente ici ?
Utilise les fonctionnalités... de tableau : conversion texte vers tableau.
Il suffit de définir le nombre de colonnes du tableau final
1) Les données d'une colonne sont copiées dans WORD
2) Fonctionnalité de conversion (séparateur, nb de colonnes...)
3) Recopie de WORD vers EXCEL des n colonnes obtenues

Ici aucun problème de volumétrie n'est évoqué. Et ça reste, je l'avoue dans
le domaine de la bricole.
Ultime solution : utiliser PERL.
Cordialement à tous.
Pascal

Sylvie PARADIS a écrit dans le message :

Bonjour,



J'ai un problème d'extraction de données avec Excel que je n'arrive pas à
résoudre. J'ai été visiter EXCELABO mais je ne vois toujours pas comment
faire alors je pose ma question si je peux trouver de l'aide:



Je reçois (à vrai dire j'enregistre des fichiers .lst sur une disquette à
partir d'un serveur qui ne nous appartiens pas (sous-traitance) tous les
jours le fichier client dont nous avons traités les commandes la veille,
pour en faire des stats sur Excel. Le problème est que ce fichier et tous
les jours de plus en plus volumineux et je voudrais donc savoir s'il y a
possibilité d'en extraire ses données en automatisant.



J'ai réussie à extraire les données de la disquette au PC de façon
automatique comme ceci:



Le nom de dossier ou se trouvent les données change tous les jours et
porte

le nom de la date du traitement. Par exemple le dossier aujourd'hui
s'appelle 13122004. Donc le fichier étant traité toujours le lendemain,
j'ai

placé la date du jour -1 dans une variable.



* 1 module par macro (je préfère pour quand j'y retourne plus tard...plus
visuel et plus parlant)
* Il y a 3 champs dont: code client, nom client et moyen de paiement
* Je dois donc faire des stats sur les moyens de paiements clients(moyen
de

paiement, fréquence etc.)
* Le fichier se présente comme ci-après:
* 1 ligne avec le code client
* 1 ligne avec le nom client
* 1 ligne avec le moyen de paiement
Ensuite, il y a 2 lignes vides et ainsi de suite de façon régulière) Je
dois

en suite supprimer les deux premiers caractères des ligne (avec les
fonctions de texte nbcar etc.)
Jusque là, pas de problème et, j'ai avec le temps optimisée de cette façon
(vérification de la présence du dossier sur la disquette, historique auto
avec création du nom de fichier et le traitement de sera pas difficile non
plus...tout est prêt)
Je ne suis pas du genre à me décourager mais, ça fait quand même quelques
mois que je travaille là dessus à temps perdu (à la maison)
Je souhaite au moins savoir si c'est possible d'extraire ces données et de
les ranger dans trois colonnes distinctes et adjacentes.
J'ai fais plusieurs essais (à vrai dire de nombreux) et j'y arrive
seulement

quand les données sont
disposées dans trois colonnes différentes mais de la façon décrite plus
haut. Je continue à croire qu'avec les fonctions de recherche verticale et
horizontale c'est possible mais sinon, j'aimerais arrêter de chercher pour
rien.
Quelqu'un peut-il m'aider (au moins à me dire si c'est possible, pour le
reste je finirai bien par trouver...j'ai Le grand livre de Micro
application

d'Excel mais ça ne fait pas tout et, encore moins toute seule)



Je vous remercie d'avance.



Sylvie




*********************************************************



Sub DateDeTraitement()
Dim NomDossier As String
NomDossier= Format(Date - 1, "dd/mm/yyyy")
Sheets("CLIENTS").Select
Range("B2").Select
ActiveCell.Value = NomDossier (pour insérer automatiquement la date de
traitement dans la cellule B2 de la feuille "CLIENTS")
End Sub



Et là, pour enregistrer automatiquement après traitement:



**********************************************************



Sub Enregistrer()



'Enregistre le document automatiquement dans le dossier
C:AGCEEXPLOITATIONStatsClients avec comme préfixe "StatsClients_" suivi
de "FormatDate" (jj-mm)



Dim NomDossier As String
'Déclaration la variable que je nomme "NomDossier"comme chaine de
caractères

Dim Prefixe As String
'Déclaration la variable que je nomme "Prefixe" comme chaine de caractères
Dim Extension As String
'Déclaration la variable que je nomme "Extension" comme chaine de
caractère

Count = Len(ActiveWorkbook.Name)
Name = Left(ActiveWorkbook.Name, Count - 4)
NomDossier = Format(Date - 1, "dd-mm")
'Voici le format de la date (La variable "NomDossier" - 1 donc la date de
la

veille) jour-mois
Prefixe = "StatsClients_"
'Voici le préfixe du fichier personnalisé
Extension = ".xls"
'Voici l'extension du fichier
ChDir "C:AGCEEXPLOITATIONStatsClientss-HISTORIQUE"
'Là, c'est le chemin du dossier dans lequel j'enregistre le fichier...
ThisWorkbook.SaveCopyAs Filename:=Prefixe & DateDuJour & Extension
End Sub




**************************************************************
J'avais oubliée le début:
Comme ce n'est pas encore tout à fait terminé, j'ai imaginée 1 seule macro
pour le traitement qui devrait ressembler à ça (ça marche)



Sub Demarrage()
If Exist = "A:JOUR" Then (le dossier 13122004 se trouve dans le
dossier

"JOUR")
Dialogue.Caption = "Progression en cours..."
Dialogue.Height = 82
Dialogue.Width = 221
Application.Visible = False
Dim NomDossier As String
NomDossier= Format(Date - 1, "dd/mm/yyyy")
Sheets("CLIENTS").Select
Range("B2").Select
ActiveCell.Value = NomDossier
Application.Run "StatsClients.xls!NomDeLaMacro1"
Application.Run "StatsClients.xls!NomDeLaMacro2"
Application.Run "StatsClients.xls!NomDeLaMacro3"
End Sub



Et petit à petit, je testerai la présence de la disquette etc. (c'est pas
trop difficile)



Merci à ceux qui voudront bien me dire si c'est possible.



Sylvie








Avatar
Christian.L
Bonjour Sylvie

Si je comprend bien le problème, tu a des infos (3 à chaque fois) qui sont
écrites sur des lignes séparées, avec 2 lignes blanches et tu voudrait
présenter ces infos sur 3 colonnes mitoyennes.

C'est bien cela.
Dans ce cas, cela me semble difficile directement par des formules. Par
contre la macro ne doit pas être difficile à réaliser.

C.L.

"Sylvie PARADIS" a écrit dans le message de
news:
Bonjour,



J'ai un problème d'extraction de données avec Excel que je n'arrive pas à
résoudre. J'ai été visiter EXCELABO mais je ne vois toujours pas comment
faire alors je pose ma question si je peux trouver de l'aide:



Je reçois (à vrai dire j'enregistre des fichiers .lst sur une disquette à
partir d'un serveur qui ne nous appartiens pas (sous-traitance) tous les
jours le fichier client dont nous avons traités les commandes la veille,
pour en faire des stats sur Excel. Le problème est que ce fichier et tous
les jours de plus en plus volumineux et je voudrais donc savoir s'il y a
possibilité d'en extraire ses données en automatisant.



J'ai réussie à extraire les données de la disquette au PC de façon
automatique comme ceci:



Le nom de dossier ou se trouvent les données change tous les jours et
porte

le nom de la date du traitement. Par exemple le dossier aujourd'hui
s'appelle 13122004. Donc le fichier étant traité toujours le lendemain,
j'ai

placé la date du jour -1 dans une variable.



* 1 module par macro (je préfère pour quand j'y retourne plus tard...plus
visuel et plus parlant)
* Il y a 3 champs dont: code client, nom client et moyen de paiement
* Je dois donc faire des stats sur les moyens de paiements clients(moyen
de

paiement, fréquence etc.)
* Le fichier se présente comme ci-après:
* 1 ligne avec le code client
* 1 ligne avec le nom client
* 1 ligne avec le moyen de paiement
Ensuite, il y a 2 lignes vides et ainsi de suite de façon régulière) Je
dois

en suite supprimer les deux premiers caractères des ligne (avec les
fonctions de texte nbcar etc.)
Jusque là, pas de problème et, j'ai avec le temps optimisée de cette façon
(vérification de la présence du dossier sur la disquette, historique auto
avec création du nom de fichier et le traitement de sera pas difficile non
plus...tout est prêt)
Je ne suis pas du genre à me décourager mais, ça fait quand même quelques
mois que je travaille là dessus à temps perdu (à la maison)
Je souhaite au moins savoir si c'est possible d'extraire ces données et de
les ranger dans trois colonnes distinctes et adjacentes.
J'ai fais plusieurs essais (à vrai dire de nombreux) et j'y arrive
seulement

quand les données sont
disposées dans trois colonnes différentes mais de la façon décrite plus
haut. Je continue à croire qu'avec les fonctions de recherche verticale et
horizontale c'est possible mais sinon, j'aimerais arrêter de chercher pour
rien.
Quelqu'un peut-il m'aider (au moins à me dire si c'est possible, pour le
reste je finirai bien par trouver...j'ai Le grand livre de Micro
application

d'Excel mais ça ne fait pas tout et, encore moins toute seule)



Je vous remercie d'avance.



Sylvie




*********************************************************



Sub DateDeTraitement()
Dim NomDossier As String
NomDossier= Format(Date - 1, "dd/mm/yyyy")
Sheets("CLIENTS").Select
Range("B2").Select
ActiveCell.Value = NomDossier (pour insérer automatiquement la date de
traitement dans la cellule B2 de la feuille "CLIENTS")
End Sub



Et là, pour enregistrer automatiquement après traitement:



**********************************************************



Sub Enregistrer()



'Enregistre le document automatiquement dans le dossier
C:AGCEEXPLOITATIONStatsClients avec comme préfixe "StatsClients_" suivi
de "FormatDate" (jj-mm)



Dim NomDossier As String
'Déclaration la variable que je nomme "NomDossier"comme chaine de
caractères

Dim Prefixe As String
'Déclaration la variable que je nomme "Prefixe" comme chaine de caractères
Dim Extension As String
'Déclaration la variable que je nomme "Extension" comme chaine de
caractère

Count = Len(ActiveWorkbook.Name)
Name = Left(ActiveWorkbook.Name, Count - 4)
NomDossier = Format(Date - 1, "dd-mm")
'Voici le format de la date (La variable "NomDossier" - 1 donc la date de
la

veille) jour-mois
Prefixe = "StatsClients_"
'Voici le préfixe du fichier personnalisé
Extension = ".xls"
'Voici l'extension du fichier
ChDir "C:AGCEEXPLOITATIONStatsClientss-HISTORIQUE"
'Là, c'est le chemin du dossier dans lequel j'enregistre le fichier...
ThisWorkbook.SaveCopyAs Filename:=Prefixe & DateDuJour & Extension
End Sub




**************************************************************
J'avais oubliée le début:
Comme ce n'est pas encore tout à fait terminé, j'ai imaginée 1 seule macro
pour le traitement qui devrait ressembler à ça (ça marche)



Sub Demarrage()
If Exist = "A:JOUR" Then (le dossier 13122004 se trouve dans le
dossier

"JOUR")
Dialogue.Caption = "Progression en cours..."
Dialogue.Height = 82
Dialogue.Width = 221
Application.Visible = False
Dim NomDossier As String
NomDossier= Format(Date - 1, "dd/mm/yyyy")
Sheets("CLIENTS").Select
Range("B2").Select
ActiveCell.Value = NomDossier
Application.Run "StatsClients.xls!NomDeLaMacro1"
Application.Run "StatsClients.xls!NomDeLaMacro2"
Application.Run "StatsClients.xls!NomDeLaMacro3"
End Sub



Et petit à petit, je testerai la présence de la disquette etc. (c'est pas
trop difficile)



Merci à ceux qui voudront bien me dire si c'est possible.



Sylvie








Avatar
Sylvie PARADIS
Bonjour,

Merci beaucoup d'avoir lu. J'analyserai quand j'aurai un pleu plus de temps.
Encore merci

Sylvie


"Sylvie PARADIS" a écrit dans le message de
news:
Bonjour,



J'ai un problème d'extraction de données avec Excel que je n'arrive pas à
résoudre. J'ai été visiter EXCELABO mais je ne vois toujours pas comment
faire alors je pose ma question si je peux trouver de l'aide:



Je reçois (à vrai dire j'enregistre des fichiers .lst sur une disquette à
partir d'un serveur qui ne nous appartiens pas (sous-traitance) tous les
jours le fichier client dont nous avons traités les commandes la veille,
pour en faire des stats sur Excel. Le problème est que ce fichier et tous
les jours de plus en plus volumineux et je voudrais donc savoir s'il y a
possibilité d'en extraire ses données en automatisant.



J'ai réussie à extraire les données de la disquette au PC de façon
automatique comme ceci:



Le nom de dossier ou se trouvent les données change tous les jours et
porte le nom de la date du traitement. Par exemple le dossier aujourd'hui
s'appelle 13122004. Donc le fichier étant traité toujours le lendemain,
j'ai placé la date du jour -1 dans une variable.



* 1 module par macro (je préfère pour quand j'y retourne plus tard...plus
visuel et plus parlant)
* Il y a 3 champs dont: code client, nom client et moyen de paiement
* Je dois donc faire des stats sur les moyens de paiements clients(moyen
de paiement, fréquence etc.)
* Le fichier se présente comme ci-après:
* 1 ligne avec le code client
* 1 ligne avec le nom client
* 1 ligne avec le moyen de paiement
Ensuite, il y a 2 lignes vides et ainsi de suite de façon régulière) Je
dois en suite supprimer les deux premiers caractères des ligne (avec les
fonctions de texte nbcar etc.)
Jusque là, pas de problème et, j'ai avec le temps optimisée de cette façon
(vérification de la présence du dossier sur la disquette, historique auto
avec création du nom de fichier et le traitement de sera pas difficile non
plus...tout est prêt)
Je ne suis pas du genre à me décourager mais, ça fait quand même quelques
mois que je travaille là dessus à temps perdu (à la maison)
Je souhaite au moins savoir si c'est possible d'extraire ces données et de
les ranger dans trois colonnes distinctes et adjacentes.
J'ai fais plusieurs essais (à vrai dire de nombreux) et j'y arrive
seulement quand les données sont
disposées dans trois colonnes différentes mais de la façon décrite plus
haut. Je continue à croire qu'avec les fonctions de recherche verticale et
horizontale c'est possible mais sinon, j'aimerais arrêter de chercher pour
rien.
Quelqu'un peut-il m'aider (au moins à me dire si c'est possible, pour le
reste je finirai bien par trouver...j'ai Le grand livre de Micro
application d'Excel mais ça ne fait pas tout et, encore moins toute seule)



Je vous remercie d'avance.



Sylvie




*********************************************************



Sub DateDeTraitement()
Dim NomDossier As String
NomDossier= Format(Date - 1, "dd/mm/yyyy")
Sheets("CLIENTS").Select
Range("B2").Select
ActiveCell.Value = NomDossier (pour insérer automatiquement la date de
traitement dans la cellule B2 de la feuille "CLIENTS")
End Sub



Et là, pour enregistrer automatiquement après traitement:



**********************************************************



Sub Enregistrer()



'Enregistre le document automatiquement dans le dossier
C:AGCEEXPLOITATIONStatsClients avec comme préfixe "StatsClients_" suivi
de "FormatDate" (jj-mm)



Dim NomDossier As String
'Déclaration la variable que je nomme "NomDossier"comme chaine de
caractères
Dim Prefixe As String
'Déclaration la variable que je nomme "Prefixe" comme chaine de caractères
Dim Extension As String
'Déclaration la variable que je nomme "Extension" comme chaine de
caractère
Count = Len(ActiveWorkbook.Name)
Name = Left(ActiveWorkbook.Name, Count - 4)
NomDossier = Format(Date - 1, "dd-mm")
'Voici le format de la date (La variable "NomDossier" - 1 donc la date de
la veille) jour-mois
Prefixe = "StatsClients_"
'Voici le préfixe du fichier personnalisé
Extension = ".xls"
'Voici l'extension du fichier
ChDir "C:AGCEEXPLOITATIONStatsClientss-HISTORIQUE"
'Là, c'est le chemin du dossier dans lequel j'enregistre le fichier...
ThisWorkbook.SaveCopyAs Filename:=Prefixe & DateDuJour & Extension
End Sub




**************************************************************
J'avais oubliée le début:
Comme ce n'est pas encore tout à fait terminé, j'ai imaginée 1 seule macro
pour le traitement qui devrait ressembler à ça (ça marche)



Sub Demarrage()
If Exist = "A:JOUR" Then (le dossier 13122004 se trouve dans le
dossier "JOUR")
Dialogue.Caption = "Progression en cours..."
Dialogue.Height = 82
Dialogue.Width = 221
Application.Visible = False
Dim NomDossier As String
NomDossier= Format(Date - 1, "dd/mm/yyyy")
Sheets("CLIENTS").Select
Range("B2").Select
ActiveCell.Value = NomDossier
Application.Run "StatsClients.xls!NomDeLaMacro1"
Application.Run "StatsClients.xls!NomDeLaMacro2"
Application.Run "StatsClients.xls!NomDeLaMacro3"
End Sub



Et petit à petit, je testerai la présence de la disquette etc. (c'est pas
trop difficile)



Merci à ceux qui voudront bien me dire si c'est possible.



Sylvie