VBA ouvrir fichier xls
Résolu
wam202
Messages postés
34
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai crée un tableau excel avec la liste de tous les chemins des fichiers excel présents dans un répertoire.
J'aimerai créer une macro qui ouvre chaque fichier, en allant chercher à l'intérieur de la cellule son chemin. Il s'agit d'une liste, donc je pensais faire une boucle qui ouvre tour à tour chaque fichier. (pour ce que la macro ira faire dedans, je me débrouillerai... ou vous demanderai à nouveau !!)
Quelqu'un pourrait-il m'expliquer comment faire svp ?
D'avance merci !
++
J'ai crée un tableau excel avec la liste de tous les chemins des fichiers excel présents dans un répertoire.
J'aimerai créer une macro qui ouvre chaque fichier, en allant chercher à l'intérieur de la cellule son chemin. Il s'agit d'une liste, donc je pensais faire une boucle qui ouvre tour à tour chaque fichier. (pour ce que la macro ira faire dedans, je me débrouillerai... ou vous demanderai à nouveau !!)
Quelqu'un pourrait-il m'expliquer comment faire svp ?
D'avance merci !
++
A voir également:
- VBA ouvrir fichier xls
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Ouvrir fichier .dat - Guide
- Comment ouvrir un fichier docx ? - Guide
- Comment ouvrir un fichier 7z - Guide
3 réponses
Salut,
Je suppose dans l'exemple que tes chemins sont stockés dans la colonne A à partir de A2 :
Je suppose dans l'exemple que tes chemins sont stockés dans la colonne A à partir de A2 :
Dim chemin As String Dim i As Integer, derlign As Integer derlign = Range("A65536").End(xlUp).Row For i = 2 To derlign chemin = Cells(i, 1) Workbooks.Open Filename:=chemin 'ici fais ce qu'il te plait ActiveWorkbook.Close Next
C'est exactement ça, merci ! :-)
Bon... ben je reviens déjà vers toi : je souhaite maintenant importer des informations contenues dans des cellules du premier tableau (celui que je viens de faire ouvrir) vers un second.
J'ai une petite complication s'agissant d'une cellule contenant n°+nom (ex : 3A - Baudelaire) car je veux prendre ces infos pour mettre le n° dans une cellule et le nom dans l'autre.
A savoir que n°+nom se présente toujours de manière à peu près identique. Le n° peut contenir jusqu'à trois caractère, suivi d'un expace puis un tiret puis re-espace et le nom.
Merci d'avance de votre aide !
++
Bon... ben je reviens déjà vers toi : je souhaite maintenant importer des informations contenues dans des cellules du premier tableau (celui que je viens de faire ouvrir) vers un second.
J'ai une petite complication s'agissant d'une cellule contenant n°+nom (ex : 3A - Baudelaire) car je veux prendre ces infos pour mettre le n° dans une cellule et le nom dans l'autre.
A savoir que n°+nom se présente toujours de manière à peu près identique. Le n° peut contenir jusqu'à trois caractère, suivi d'un expace puis un tiret puis re-espace et le nom.
Merci d'avance de votre aide !
++
Pas de problème. Je vais essayer de détailler un max et d'être clair...
Tu veux extraire une partie du contenu de la cellule mettons A1. Tu va donc avoir besoin de :
- nombre de caractères contenus dans A1 :
- place du tiret dans la cellule A1 :
- extraire la partie à gauche de la cellule A1 :
Ce que l'on veux ce sont les x caractères à gauche de la chaine de caractères contenue dans A1.
x = place du tiret (4) - 1. Dans notre cas, on ne veux pas conserver l'espace donc x = place du tiret - 2
en VBA x étant un nombre :
La partie à gauche du tiret dans notre cellule A1 est :
ou autrement dit :
Même raisonnement pour la partie droite :
x = Nbre total de caractères - place du tiret - 1
en VBA :
Donc la partie "droite" de A1 s'écrit en VBA :
Importer vers un second tableau :
2nd tableau : "destination"
cellules de destination : Feuille "Feuil1" cellules B1 et C1
1er tableau : classeur que l'on vient d'ouvrir
cellule source : A1
Tu veux extraire une partie du contenu de la cellule mettons A1. Tu va donc avoir besoin de :
- nombre de caractères contenus dans A1 :
Len(Cells(1, 1))
- place du tiret dans la cellule A1 :
InStr(Cells(1, 1), "-")
- extraire la partie à gauche de la cellule A1 :
Left(Cells(1, 1), 3)'renvoie les 3 premiers caractères contenus dans A1
Ce que l'on veux ce sont les x caractères à gauche de la chaine de caractères contenue dans A1.
x = place du tiret (4) - 1. Dans notre cas, on ne veux pas conserver l'espace donc x = place du tiret - 2
en VBA x étant un nombre :
Dim x As Integer x = InStr(Cells(1, 1), "-") - 2
La partie à gauche du tiret dans notre cellule A1 est :
Dim x As Integer x = InStr(Cells(1, 1), "-") - 2 Left(Cells(1, 1), x)
ou autrement dit :
Left(Cells(1, 1), InStr(Cells(1, 1), "-") - 2)'ceci nous évitant la création d'une variable inutile.
Même raisonnement pour la partie droite :
x = Nbre total de caractères - place du tiret - 1
en VBA :
Dim x As Integer x = Len(Cells(1, 1)) - InStr(Cells(1, 1), "-") - 1
Donc la partie "droite" de A1 s'écrit en VBA :
Right(Cells(1, 1), Len(Cells(1, 1)) - InStr(Cells(1, 1), "-") - 1)
Importer vers un second tableau :
2nd tableau : "destination"
cellules de destination : Feuille "Feuil1" cellules B1 et C1
1er tableau : classeur que l'on vient d'ouvrir
cellule source : A1
With Workbooks("destination.xls") .Sheets("Feuil1").Range("B1") = Left(Range("A1"), InStr(Range("A1"), "-") - 2) .Sheets("Feuil1").Range("C1") = Right(Range("A1"), Len(Range("A1") - InStr(Range("A1"), "-") - 1) End With