3 réponses
pijaku
- Messages postés
- 12251
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 17 mars 2021
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
wam202
- Messages postés
- 34
- Date d'inscription
- mardi 18 mars 2008
- Statut
- Membre
- Dernière intervention
- 25 mars 2020
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 !
++
pijaku
- Messages postés
- 12251
- Date d'inscription
- jeudi 15 mai 2008
- Statut
- Modérateur
- Dernière intervention
- 17 mars 2021
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