cs_Geraldine
Messages postés10Date d'inscriptionlundi 10 février 2003StatutMembreDernière intervention 8 mai 2004
-
25 févr. 2003 à 14:00
cs_Geraldine
Messages postés10Date d'inscriptionlundi 10 février 2003StatutMembreDernière intervention 8 mai 2004
-
12 mars 2003 à 12:02
Bonjour,
Comment puis-je utiliser la fonction, ActiveCell.FormulaR1C1 = "=RIGHT([1001004.xls]Feuil1!R6C1,10)" sans mettre le nom du fichier (1001004.xls) ?
Le chemin a été définit auparavant.
Le code ouvre tous les fichiers d'un répertoire donné.
Mon code :
Sub Macro1()
'
Dim sFichier As String
Workbooks.Add
ChDir ("h:\Transit\Otcdep\Arretes\TCN\CR\Agate")
sFichier = Dir("*.xls")
Do Until sFichier = "1001008.xls"
Workbooks.Open (sFichier)
'
'ActiveCell.FormulaR1C1 = "=RIGHT([1001004.xls]Feuil1!R6C1,10)"
'
ActiveWorkbook.Close
sFichier = Dir()
Loop
End Sub
LeDesassembleur
Messages postés64Date d'inscriptionvendredi 21 décembre 2001StatutMembreDernière intervention16 janvier 2009 27 févr. 2003 à 13:45
Bonjour Géraldine,
Effectivement, je n'ai pas été très "explicite" dans mon comentaire mais j'ai été interrompu ce matin alors que j ete répondais... Désolé.
J'espere avoir compris ce que tu demandais ;-)
Ce que je voulais dire :
As-tu essayé de mettre le nom de ton fichier dans une variable du style Nomfichier
puis de taper :
ActiveCell.FormulaR1C1 = "=RIGHT([" & nomfichier & "]Feuil1!R6C1,10)"
sinon, essaie de passer une premiere fois dans ton fichier 1001004.xls, enregistre la formule dans une variable, puis restitue la pour chacun des fichiers que tu ouvres par la suite (sans avoir à la retaper ;-)
Est-ce que j'ai répondu ou suis-je à côté?
si je suis à côté, peux-tu m'expliquer d'avantage ce que tu compte faire?
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Geraldine
Messages postés10Date d'inscriptionlundi 10 février 2003StatutMembreDernière intervention 8 mai 2004 27 févr. 2003 à 15:28
Salut,
Merci pour le coup de main, mais effectivement je crois que mon souci est plus complexe.
1) Mettre mon fichier dans une variable (NomFichier) veut dire que je n'ai qu'un fichier dans ma variable. (Sauf erreur, je débute dans Visual Basic)
2) Si j'enregistre la formule dans une variable, dans ma formule il y a toujours le nom du fichier qui va changer, donc ???
Explication de mon souci :
J'ai environ 500 fichiers .xls de base qui ont la même structure. (C'est à dire, par exemple, la date se situe toujours en A6 mais ce n'est pas forcément la même date pour tous les fichiers).
Je souhaite par Visual Basic, obtenir un fichier .xls avec uniquement quelques cellules de mes fichiers de base.
Par exemple, on veut récupérer :
- la partie droite de la cellule A6 du 1001004.xls vers A1 du NouveauFichier.xls
- cellule D9 du 1001004.xls vers B1 du NouveauFichier.xls
- la partie droite de la cellule A6 du 1001005.xls vers A2 du NouveauFichier.xls
- cellule D9 du 1001005.xls vers B2 du NouveauFichier.xls
Etc..... pour tous les fichiers de Base (de 1001004.xls : 1001999.xls)
LeDesassembleur
Messages postés64Date d'inscriptionvendredi 21 décembre 2001StatutMembreDernière intervention16 janvier 2009 27 févr. 2003 à 16:31
Salut Géraldine
Effectivement, c'etait un peu plus complexe que ce à quoi je m'attendais.
Il n'empeche que je te propose une solution :
Tu crée un fichier (ici resultat.xls) dans lequel tu colle cete macro
tu place ce fichier dans le repertoire ou sont tous les autres fichiers excel et tu lance la macro.
Celle ci se contente d'ouvrir tout les fichiers excel presents (tu peux affiner à souhait si tu le désires, en donnant des criteres de noms) et enregistre dans un tableau en mémoire les valeurs des cases A6 (les 10 caracteres de droite) et D9
Une fois tous les fichiers parcourus, elle restitue les valeurs engrangées dans le fichier resultat...
Tiensmoi au courant si ça te va ;-)
A +
Le Desassembleur (alias Bertrand)
Sub Macro1()
'
Dim tableau_tempo(2, 1000)
Dim sFichier As String
boucle = 0
With Application.FileSearch
If .Execute() > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count
If Right(.FoundFiles(i), 3) = "xls" And Right(.FoundFiles(i), 12) <> "resultat.xls" Then
Workbooks.Open Filename:=.FoundFiles(i)
boucle = boucle + 1
Range("A6").Select
tableau_tempo(1, boucle) = Right(ActiveCell.Value, 10)
Range("D9").Select
tableau_tempo(2, boucle) = ActiveCell.Value
ActiveWorkbook.Close
End If
Next i
Else
MsgBox "There were no files found."
End If
End With
Range("A1").Select
For boucle = 1 To 1000
ActiveCell.Value = tableau_tempo(1, boucle)
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = tableau_tempo(2, boucle)
ActiveCell.Offset(1, -1).Select
Next boucle
'(bien sûr, tu paux ajouter une condition du style si contenu vide alors je passe...)
End Sub
Il y a certainement moyen de faire plus court mais en tout cas ça fonctionne.
cs_Geraldine
Messages postés10Date d'inscriptionlundi 10 février 2003StatutMembreDernière intervention 8 mai 2004 12 mars 2003 à 12:02
Bonjour,
Je suis désolé, je n'ai pas oublié de te répondre.
Après une période de vacances, je n'ai pas eu le temps de m'occuper de VB.
Mais d'après un premier test, ce que tu m'avais répondu correspond à mon besoin. Il faut maintenant approfondir.
Je te tiendrai au courant dès que possible.