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

Récupérer dynamiquement des données d'un autre fichier Excel fermé

2 réponses
Avatar
MaxOslo
Bonjour,

J'ai deux fichiers, le premier (Fichier1) fait office de base de données et détient des informations qui serviront à alimenter le second (Fichier2).
Le "e;Fichier1"e; est stocké dans un dossier nommé "e;Test"e;. Dans le dossier "e;Test"e;, il y a pas mal de fichiers excel de type (Fichier1) et servent tous à renseigner ce "e;Fichier2"e;. Il y a un seul "e;Fichier2"e; et beaucoup de "e;Fichier1"e;. Pour repérer les données d'un fichier voulu, les "e;Fichier1"e; commencent tous par une série de 9 chiffres qui leur sont propres.

Ainsi, j'aimerais coder en VBA un programme me permettant de :

1- Récupérer la série de chiffres qui vient d'être ajoutée dans la colonne B du Fichier2
2- En fonction de celle-ci, aller ouvrir le dossier Test
3- Trouver dans ce dossier un excel dont le nom commence par la série de chiffres relevée auparavant
4- Récupérer certaines des valeurs (admettons colonne B, C, D du Fichier1 pour les inclure en C, D, E du Fichier2)
5- Refermer le Fichier de type 1 ouvert

J'espère que mon texte est assez clair.
J'ai hâte de vous lire, merci d'avance.

Max

2 réponses

Avatar
MichD
Le 20/05/21 Í  03:42, MaxOslo a écrit :
Bonjour,
J'ai deux fichiers, le premier (Fichier1) fait office de base de données et
détient des informations qui serviront Í  alimenter le second (Fichier2).
Le "e;Fichier1"e; est stocké dans un dossier nommé "e;Test"e;. Dans le dossier
"e;Test"e;, il y a pas mal de fichiers excel de type (Fichier1) et servent tous
Í  renseigner ce "e;Fichier2"e;. Il y a un seul "e;Fichier2"e; et beaucoup de
"e;Fichier1"e;. Pour repérer les données d'un fichier voulu, les "e;Fichier1"e;
commencent tous par une série de 9 chiffres qui leur sont propres.
Ainsi, j'aimerais coder en VBA un programme me permettant de :
1- Récupérer la série de chiffres qui vient d'être ajoutée dans la colonne B du

***** Peu importe la cellule de la colonne B, que ce doit une nouvelle
donnée ou une modification d'une ancienne donnée.
2- En fonction de celle-ci, aller ouvrir le dossier Test
3- Trouver dans ce dossier un excel dont le nom commence par la série de
chiffres relevée auparavant

***** Tu veux dire par la série de chiffres que tu viens d'inscrire dans
la cellule lors de l'opération N°1
4- Récupérer certaines des valeurs (admettons colonne B, C, D du Fichier1 pour
les inclure en C, D, E du Fichier2)

**** Fichier1 : C'est le fichier dans lequel tu as ajouté ou modifié une
valeur en colonne B
**** Fichier2 : C'est le fichier que tu ouvres Í  partir de la série de
chiffres que tu as saisie en colonne B
| Récupérer certaines des valeurs
**** Il faut être plus précis que cela! O͹ sont précisément ces données
dans la feuille de calcul ?
Comment identifier ces données, tu as un ou des critères
particuliers?
**** Même chose pour le fichier2, o͹ veux-tu inscrire ces données?
À la suite des données existantes dans le fichier ou ailleurs?
5- Refermer le Fichier de type 1 ouvert
J'espère que mon texte est assez clair.

**** C'est bien, mais il faut être très précis avec Excel.
MichD
Avatar
MichD
Bonjour,
Ceci est un exemple de code que tu dois adapter Í  ton
environnement de travail.
Place tout le code qui suit dans le module de la feuille
de calcul o͹ tu inscris les numéros du fichier en Colonne A
Tu fais un clic droit sur l'onglet de la feuille et retiens
la commande "Visualiser le code" et tu fais un copier-coller
de tout ce qui suit.
J'ai commenté le code pour que tu puisses comprendre ce qui
se passe, bien sͻr, il faudra adapter!
'----------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'Déclaration des variables.
Dim Rg As Range, Wk As Workbook, Sh As Worksheet
Dim Chemin As String
'Endroit o͹ les fichiers recherchés sont situés.
Chemin = "E:Téléchargements" 'Í  adapter
Set Rg = Intersect(Target, Range("A:A"))
If Not Rg Is Nothing And Rg.Cells.Count = 1 Then
'affiche tous les fichiers Excel dans le répertoire
'débutant par le numéro inscrit dans la cellule de
'la colonne A. La fenêtre de permet de sélectionner
'le fichier Excel que tu désires.
Fichier = BrowseFile(Chemin & Rg.Value & "*.xl*")
'pour ouvrir le fichier
'Empêche le rafraÍ®chissement de l'écran
Application.ScreenUpdating = False
'Ouverture du fichier choisi
Set Wk = Workbooks.Open(Fichier)
'Remplace "Feuil1", par le nom de la feuille ou tu
'veux inscrir des données que tu viens d'ouvrir
Set Sh = Wk.Worksheets("Feuil1")
'Désactive l'exécution de macros événementielles
Application.EnableEvents = False
'pour copier les données de la feuil1 du fichier que
'tu viens d'ouvrir vers ton fichier actuel.
'Feuil5 = Nom de ton classeur o͹ tu as placé la macro
'A1 = La cellule qui va recevoir les données
'de la feuille du classeur que tu viens d'ouvrir. (Cellule C1)
'Tu répètes cette ligne de code pour chacune des cellules
'que tu veux copié en adaptant les adresses des cellules.
'Adapte le nom de la Feui11 pour celle de ton application
ThisWorkbook.Worksheets("Feuil1").Range("B1") = Sh.Range("C1")
'Ajouts des cellules Í  copier...
'Réactive les macros événementielles
Application.EnableEvents = True
'Lorsque la copie est terminée, pour fermer le classeur que
'tu as ouvert sans sauvegarde
Wk.Close False
Application.ScreenUpdating = True
End If
End Sub
'----------------------------------------------------
Function BrowseFile(CheminEtTypeFichier) As String
With Application.FileDialog(msoFileDialogFilePicker)
'Définit un titre pour la boÍ®te de dialogue
.Title = "Choisir le fichier BASE DE DONNÉES EXCEL"
'Empêcher la multi-sélection
.AllowMultiSelect = False
'Répertoire par défaut suivi du type de fichier par défaut
.InitialFileName = CheminEtTypeFichier
'Efface les filtres existants.
.Filters.Clear
'Définit une liste de filtres pour le champ "Type de fichiers".
'affiche tous les fichiers d'Excel nonobstant leur extension
.Filters.Add "Classeurs Excel", "*.xl"
'Définit le filtre qui s'affiche par
'défaut dans le champ "Type de fichiers "."
.FilterIndex = 1
'Indique le type d'affichage dans la boͮte de dialogue
'(exemple visualisation des propriétés)
.InitialView = msoFileDialogViewList 'msoFileDialogViewProperties
'Affiche la boͮte de dialogue
.Show
If .SelectedItems.Count > 0 Then
BrowseFile = .SelectedItems(1)
Else
BrowseFile = ""
End If
End With
End Function
'----------------------------------------------------
MichD