Fichier Base et Extraction automatique de données vers X fiches

Julie-F

XLDnaute Occasionnel
Bonjour à tous,

Voilà j'ai un gros soucis. En effet, j'ai une base (BDD) constituée sur un fichier Excel à partir de laquelle je dois extraire un certain nombre de données dans plus de 1600 fiches.
Les fiches sont déjà constituées (1 feuille par fichier) et seules certaines cellules doivent être renseignées gràce aux informations contenues dans BDD.

Le travail risque d'être long et fastidieux et les nombreuses manipulations une source d'erreur, d'où ma question : est-il possible d'automatiser ces extractions ?

Chaque fichier contenant une fiche est nommé de la même façon à savoir :
ABCD_1452 (seul le chiffre apres le signe _ change)
Ce chiffre se trouve à la fois sur le fichier "Fiche" en cellule K1 et en colonne A dans BDD.

Est-il possible gràce à cet "identifiant unique" de faire réference à celui-ci afin d'alimenter le reste des cellules ?

C'est-à-dire que le fichier ABCD_1452 ayant comme chiffre en cellule K1 devra contenir les informations contenues dans le fichier base (BDD) de la ligne portant dans la colonne A le chiffre 1452.

Les cellules à renseigner sur chaque fiche sont toutes identiques et sont toutes liées aux mêmes colonnes de BDD.

Je tente de mettre en PJ deux exemples de fichiers (1 pr BDD et l'autre "fiche" pour indiquer quelles seraient les cellules à extraire)
Mais peut-être qu'une telle automatisation est impossible.

Merci d'avance pour votre aide car je ne sais vraiment pas comment procéder.
 

Pièces jointes

  • bdd.xls
    15.5 KB · Affichages: 192
  • bdd.xls
    15.5 KB · Affichages: 187
  • bdd.xls
    15.5 KB · Affichages: 200
  • ABCD_4512.xls
    15.5 KB · Affichages: 167

kjin

XLDnaute Barbatruc
Re : Fichier Base et Extraction automatique de données vers X fiches

Bonsoir,
Si j'ai bien compris, ne serait-ce pas plus simple d'insérer un modèle de la fiche dans le classeur et dans ce modèle faire référence à la base par un numéro de ligne qui serait incrémenté automatiquement
Attention, les anciens fichiers seront écrasés !!!
Enregistre le fichier sur ton disque auparavant
A+
kjin
 

Pièces jointes

  • Julie.xls
    39 KB · Affichages: 243
  • Julie.xls
    39 KB · Affichages: 249
  • Julie.xls
    39 KB · Affichages: 260

Julie-F

XLDnaute Occasionnel
Re : Fichier Base et Extraction automatique de données vers X fiches

Bonsoir,
Si j'ai bien compris, ne serait-ce pas plus simple d'insérer un modèle de la fiche dans le classeur et dans ce modèle faire référence à la base par un numéro de ligne qui serait incrémenté automatiquement
Attention, les anciens fichiers seront écrasés !!!
Enregistre le fichier sur ton disque auparavant
A+
kjin

Bonsoir Kjin

Ta proposition est magique mais en l'espece, le modele de fiche imposé (dont je ne suis pas à l'origine) comporte un certain nombre d'USF intégrés ainsi que des menus déroulants avec cellules verrouillées et des cellules déjà renseignées en fonction du numéro unique par des infos que je n'ai pas en ma possession, je ne peux donc pas procéder ainsi.

Merci en tout cas pour ta solution (je vais mettre ton fichier dans mes archives, je suis certaine qu'il me sera utile)

Bonne soirée
 

Julie-F

XLDnaute Occasionnel
Re : Fichier Base et Extraction automatique de données vers X fiches

Bonjour Kjin

Je reviens vers toi pour avoir une précision sur le fichier que tu as fait.
Tu indiques : le compteur est en A1 de la feuille modèle.
Est-il possible de placer ce compteur en O1 ou sur toute autre cellule ?
Ou tout changement de positionnement du compteur est rédhibitoire au bon fonctionnement de la copie automatique du modéle ?
Cette question va sans doute te paraître quelque peu stupide mais en l'espece, çà m'arrangerait bien que l'on puisse le positionner sur une autre cellule.

Merci d'avance
Bonne soirée
 

kjin

XLDnaute Barbatruc
Re : Fichier Base et Extraction automatique de données vers X fiches

Bonsoir,
Ce n'est pas un pb mais il faut qq adaptations
Si tu veux utiliser la cellule O1
- les formules de la feuille modèle faisant référence à la cellule A1, il suffit de couper/coller A1 en O1 et les formules suivront
- dans la macro "Export" tu as cette ligne
Code:
    For i = 2 To dl
        .Cells(1, [COLOR="Red"][B]1[/B][/COLOR]) = i
        .Copy after:=Sheets(Sheets.Count)
        With ActiveSheet
            .Name = "Fiche"
            With .UsedRange.Cells
                .Value = .Value
            End With
            .Cells(1, [COLOR="Red"][B]1[/B][/COLOR]).ClearContents
dans laquelle il faudra remplacer A1(ligne1, colonne1) par O1 (ligne1, colonne15) donc
Code:
    For i = 2 To dl
        .Cells(1, [COLOR="Red"][B]15[/B][/COLOR]) = i
        .Copy after:=Sheets(Sheets.Count)
        With ActiveSheet
            .Name = "Fiche"
            With .UsedRange.Cells
                .Value = .Value
            End With
            .Cells(1, [COLOR="Red"][B]15[/B][/COLOR]).ClearContents
Voilà, c'est tout...enfin je crois
Pour ton pb, je lorgne du coté de ADO mais je suis loin d'être un spécialiste, mais d'autres bien plus chevroné que moi ne tarderont pas à t'apporter une solution, j'en suis sûr.
A+
kjin
 

Julie-F

XLDnaute Occasionnel
Re : Fichier Base et Extraction automatique de données vers X fiches

Bonsoir Kjin

Merci, une nouvelle fois, c'est super !

Pour ton pb, je lorgne du coté de ADO mais je suis loin d'être un spécialiste, mais d'autres bien plus chevroné que moi ne tarderont pas à t'apporter une solution, j'en suis sûr.

Je te trouve bien modeste, je voudrais seulement avoir 1/5 de tes connaissances dans l'utilisation d'excel et de toutes ses subtilités. En tout cas, tu m'as été d'une grande aide encore une fois.
Je ne voudrais pas abuser ni de ta gentillesse ni de ton temps mais peut être connais tu une astuce qui permettrait lorsque l'on fait la concatenation de 4 ou 5 cellules dans une cellule

ex pour la formule
=INDIRECT("BDD!V"&$A$1)&" " &INDIRECT("BDD!W"&$A$1)&" " &INDIRECT("BDD!X"&$A$1)

Obtenir en lieu et place des espaces un retour à la ligne et ce dans une même cellule (ce que l'on fait habituellement gràce à la combinaison de touches Alt et Entrée)

Une nouvelle fois, un grand merci pour ton aide précieuse.

Bonne soirée
 

kjin

XLDnaute Barbatruc
Re : Fichier Base et Extraction automatique de données vers X fiches

Bonsoir,
Le code caractère qui correspond au retour chariot est le caractère 10
Donc
Code:
=INDIRECT("BDD!V"&$A$1)&[COLOR="Blue"]CAR(10)[/COLOR]&INDIRECT("BDD!W"&$A$1)&[COLOR="Blue"]CAR(10)[/COLOR]&INDIRECT("BDD!X"&$A$1)
Par contre, il faut autoriser le retour à la ligne automatique dans la cellule pour que ça prenne effet
A+
kjin
 

Julie-F

XLDnaute Occasionnel
Re : Fichier Base et Extraction automatique de données vers X fiches

Bonsoir Kjin

Je me permets de reprendre ce fil, pour savoir cette fois s'il était possible automatiquement de faire la manipulation inverse c'est-à-dire j'ai mes 1600 fiches toutes constituées de la même façon dont je souhaiterai avoir les données regroupées dans un fichier unique (ma base)

Dans ce fichier unique avec en tête (intitulé de colonne, la 1ere colonne correspondrait au nom xls de la fiche ; la colonne B = à la cellule K1 de la fiche, la colonne C = cellule C9 de la fiche, colonne D = C1.
Je ne sais pas si la demande est très explicite. En faite, je partirai des fiches nommées ABCD_4512 et suivantes pour obtenir au final le fichier BDD avec en sus le nom du fichier "ABCD_4512 et suivants" en colonne A sans être obligée d'ouvrir chaque fichier un par un et de faire du copier/coller.

Une telle demande est-elle techniquement réalisable ?
 

kjin

XLDnaute Barbatruc
Re : Fichier Base et Extraction automatique de données vers X fiches

Bonsoir,
Oui c'est tout à fait envisageable
Le plus simple est de récuperer les valeurs par formule puis de remplacer ou non ces formules par leur résultat
Exemple en PJ
 

Pièces jointes

  • julie_import.zip
    16.5 KB · Affichages: 82

Julie-F

XLDnaute Occasionnel
Re : Fichier Base et Extraction automatique de données vers X fiches

Bonjour Kjin

Merci beaucoup pour ta réponse, je vais essayer pour l'ensemble des cellules que je souhaite importer.
Ca va me faciliter le travail, tu n'as pas idée à quel point.
Peux tu m'expliquer pourquoi alors que dans la macro est inscrit :
fichier = "ABCD_" & Cells(i, 1) & ".xls"
le résultat obtenu dans le fichier import en colonne A n'apparait que 541 et non ABCD_541 ?
 

chris

XLDnaute Barbatruc
Re : Fichier Base et Extraction automatique de données vers X fiches

Bonjour

Kjin devant terminer sa nuit commencée tard vu l'heure de son dernier post. je me permet de répondre.

La colonne A pré-existe dans le fichier de synthèse et le numéro sert à trouver le fichier pour alimenter les autres colonnes.
Cela implique que toutes les fiches soient référencées dans cette colonne avant de lancer l'import

Une autre solution, qui semble être celle que tu imagines, serait de stocker toutes les fiches dans un dossier et dans la macro d'ouvrir les fichiers les uns après les autres pour en récupérer les données.

Dans les deux cas ce qui peut être gênant, c'est de traiter l'ensemble des fiches à chaque fois.

Cela aurait l'avantage de détecter toute modification mais d'être de plus en plus long au fil du temps.

Donc peut-être réfléchir à une solution intermédiaire : un dossier pour la compilation initiale et un autre où seraient placées les nouvelles fiches et les fiches modifiées.
Éventuellement un dossier unique et un repère sur la date d'enregistrement du fichier...
Bref il faut que tu réfléchisses à un mode de fonctionnement pour ensuite créer le code en conséquence.
 

kjin

XLDnaute Barbatruc
Re : Fichier Base et Extraction automatique de données vers X fiches

Bonjour, salut Chris :),
Peux tu m'expliquer pourquoi alors que dans la macro est inscrit :
fichier = "ABCD_" & Cells(i, 1) & ".xls"
le résultat obtenu dans le fichier import en colonne A n'apparait que 541 et non ABCD_541 ?
J'ai effectivement cru que le nom des fiches était connu et pouvait être préalablement inscrit dans la colonne A. Dans l'exemple en PJ, je suis parti du principe que toutes les fiches était contenues dans le répertoire courant et que leur nom était de la forme "ABCD*.xls", sinon il faudra préciser
Comme l'a souligné Chris, le pb reste l'actualisation des données dans le fichier synthèse. Pour la modification, en principe, en conservant les formules, l'actualisation ne devrait pas poser de pb, bien que je n'aie pas la possibilité de tester sur 1600 fiches
Reste à voir comment gérer l'ajout et la suppression éventuel de fiches.
A+
kjin
 

Pièces jointes

  • julie-import2.zip
    16.6 KB · Affichages: 83

Julie-F

XLDnaute Occasionnel
Re : Fichier Base et Extraction automatique de données vers X fiches

Bonsoir Kjin, Chris

Kjin, si je t'ai posé la question pour le nom de fichier en colonne A c'était pour comprendre dans l'hypothese où certains viendraient à changer simplement le nom de la fiche tout en conservant la structure, l'importation des données de cette fiche "renommée" ne se ferait pas. Ai-je bien compris ?

Chris, la solution intermédiaire que tu évoques pour l'actualisation du fichier Export, à savoir :
un dossier pour la compilation initiale et un autre où seraient placées les nouvelles fiches et les fiches modifiées
est sans doute la plus appropriée en effet en raison du grand nombre de fichiers traités. Mais s'il n'y a pas de probleme pour les nouvelles fiches, en revanche, je ne vois pas très bien comment résoudre le problème des fiches modifiées qui ont déjà été "traitées" initialement dans le fichier "original" Export.

En tout cas, merci beaucoup pour votre aide à tous les deux.
 

Discussions similaires

Réponses
5
Affichages
210
  • Résolu(e)
Microsoft 365 Programme VBA
Réponses
3
Affichages
418

Statistiques des forums

Discussions
312 198
Messages
2 086 146
Membres
103 130
dernier inscrit
FRCRUNGR