VBA ouvrir fichier xls
Résolu/Fermé
wam202
Messages postés
34
Date d'inscription
mardi 18 mars 2008
Statut
Membre
Dernière intervention
25 mars 2020
-
22 janv. 2010 à 10:54
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 22 janv. 2010 à 14:50
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 22 janv. 2010 à 14:50
A voir également:
- VBA ouvrir fichier xls
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Comment ouvrir un fichier docx ? - Guide
- Fichier rar - Guide
- Ouvrir un fichier .dat - Guide
3 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 753
22 janv. 2010 à 11:03
22 janv. 2010 à 11:03
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
14
22 janv. 2010 à 11:58
22 janv. 2010 à 11:58
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
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 753
22 janv. 2010 à 14:50
22 janv. 2010 à 14:50
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