FORUM Tom's Hardware » Programmation » VB / VBA / VBS » Macro fichier de synthèse
 

Macro fichier de synthèse

Il y a 288 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Macro fichier de synthèse
 
Plus d'informations

Bonjour à tous,
 
je débute en VBA et je souhaite réaliser un fichier excel de synthèse grace à une macro reprenant plusieurs fichiers excel dans un répertoire. Tous ont le même format. J'ai commencé avec le code suivant :
 

Code :
  1. Sub chercheFichiersFermesV03()
  2. Dim X As Integer, nbFichiers As Integer, Y As Integer
  3. Dim Tableau() As String
  4. Dim Direction As String
  5. Application.ScreenUpdating = False
  6. Direction = Dir("C:\Documents and Settings\Administrateur\Mes documents\Essai macro\*.xls" )
  7. Do While Len(Direction) > 0
  8. nbFichiers = nbFichiers + 1
  9. ReDim Preserve Tableau(1 To nbFichiers)
  10. Tableau(nbFichiers) = Direction
  11. Direction = Dir()
  12. Loop
  13. If nbFichiers > 0 Then
  14. For X = 1 To nbFichiers
  15. If Tableau(X) <> ThisWorkbook.Name Then
  16. Y = Y + 1
  17. With ActiveSheet.Cells(Y, 1)
  18. .Formula = "='C:\Documents and Settings\Administrateur\Mes documents\Essai macro\[" & Tableau(X) & "]Supplier Profile" & "'!" & "C103"
  19. .Value = .Value
  20. End With
  21. End If
  22. Next X
  23. End If
  24. Application.ScreenUpdating = True
  25. End Sub


 
Mes questions sont les suivantes :
 
- Comment faire pour que sur mon fichier de synthèse ma boucle commence par exemple à la cellule A9 et non A1 comme c'est le cas actuellement ?
- Que dois je faire pour continuer à rapatrier des informations, par exemple à partir de la cellule B9 de mon fichier de synthèse (cellule des fichiers source = C128 par exemple)
 
Merci pour vos réponses,
 
Djoul


Message édité par djoul33 le 19-09-2007 à 13:48:38

Profil : Pointeur
Plus d'informations

maiheu


---------------
Da Bidz Triad©®™: Bidz Interceptor
.:: Smileyz version 4.2 [050625]::. -- Code source disponible sous licence GPL.
[u
zeb
Profil : Modérateur libre
Plus d'informations

Ton code est illisible. Merci de lire le règlement et de l'appliquer !
Pour info, les boutons http://img.presence-pc.com/forum/themes_static/images_forum/1/edit.gif et http://img.presence-pc.com/forum/themes_static/images_forum/1/edit-in.gif permettent de modifier un message. Pratique pour mettre ses messages en conformité !

 


Message édité par zeb le 20-09-2007 à 09:57:42

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

- Initialiser Y serait déjà pas mal car commencer par lui affecter Y+1 c'est très sale et mal, après tu commences de la valeurs que tu souhaites.
- Logiquement tu devrais ouvrir les classeurs sources à la chaine et les parcourir pour récupérer les informations. et ainsi de suite pour tout le répertoire.


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

Merci pour ta réponse, mais étant vraiment débutant, je patauge un peu...
Comment initialiser Y dans mon code ? j'ai fait plusieurs essai, mais ce n'est pas satisfaisant.
 
Merci d'avance

Plus d'informations

Juste pour info : Un utilitaire qui permet de formater du code VBA
http://www.oaltd.co.uk/Indenter/Default.htm

Plus d'informations

Comme tu l'as fait avant
 

Code :
  1. y = 9


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
zeb
Profil : Modérateur libre
Plus d'informations

kiki29:  :ouch:  Il y a des trucs comme ça pour le VB !?
(Remarque, je connaissais bien les "beautifiers" pour le code C.)
 
Plus aucune raison de ne plus présenter son code correctement dorénavant :o
 
Je te cite là http://www.presence-pc.com/forum/p [...] htm#t35529
(Désolé, j'ai un tout petit peu modifié ton message, Formater ne me plaisait pas, VBA est trop restrictif.)


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

Merci à tous pour votre aide, j'avais mis ce travail un peu entre parenthèses mais j'ai réussi à avancer. J'ai maintenant une autre question. Ci dessous mon code qui marche nickel, mais je bute sur quelque chose :
 

Code :
  1. Sub chercheFichiersFermesV03()
  2. Dim X As Integer, nbFichiers As Integer, Y As Integer
  3. Dim Tableau() As String
  4. Dim Direction As String
  5. Application.ScreenUpdating = False
  6. Direction = Dir("C:\Documents and Settings\Administrateur\Mes documents\Essai macro\*.xls" )
  7. Do While Len(Direction) > 0
  8. nbFichiers = nbFichiers + 1
  9. ReDim Preserve Tableau(1 To nbFichiers)
  10. Tableau(nbFichiers) = Direction
  11. Direction = Dir()
  12. Loop
  13. If nbFichiers > 0 Then
  14. Y=8
  15. For X = 1 To nbFichiers
  16. If Tableau(X) <> ThisWorkbook.Name Then
  17. Y = Y + 1
  18. With ActiveSheet.Cells(Y, 1)
  19. .Formula = "='C:\Documents and Settings\Administrateur\Mes documents\Essai macro\[" & Tableau(X) & "]Supplier Profile" & "'!" & "C103"
  20. .Value = .Value
  21. End With
  22. With ActiveSheet.Cells(Y, 2)
  23. .Formula = "='C:\Documents and Settings\Administrateur\Mes documents\Essai macro\[" & Tableau(X) & "]Supplier Profile" & "'!" & "C103"
  24. .Value = .Value
  25. End With
  26. End If
  27. Next X
  28. End If
  29. Application.ScreenUpdating = True
  30. End Sub


 
 
Comment faire pour concatener 2 cellules de mon fichier d'origine dans mon fichier de destination avec un retour ligne entre les 2 si possible. (Ex : C103 et C104 en Y2). J'ai essayé plusieurs solutions (&;+) qui ne marche pas, genre qui me retourne "vrai" et faux" ou #valeur.
 
Merci d'avance

zeb
Profil : Modérateur libre
Plus d'informations

Utilise le caractère "retour-chariot", le caractère "A la ligne" ou les deux.
 
Tu ne sais pas de quoi je parle ? :lol: De Carriage Return et de Line Feed bien sûr, dits aussi CR et LF voire 13 et 10 ;)
 
Exemple :

"ligne 1" & Chr(13) & Chr(10) & "ligne 2"



---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
85*85? Voilà ce que j'en pense!
Plus d'informations

De mémoire pas même besoin de s'embêter avec le chr(13)/10
tu prends le VbCrlf qui est une variable toute prête dans vba;)


---------------
Le destin a voulu que Magellan périsse sous les coups de JeFaisPeurALaFoule...
Puis tel Jésus il revint plus fringuant que jamais :o
http://jefaispeuralafoule.blogspot.com  
JE SUIS CONTRE LE 85*85
zeb
Profil : Modérateur libre
Plus d'informations

+1
 

vbCr
vbLf
vbCrLf


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...

Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » VB / VBA / VBS » Macro fichier de synthèse
 

Annonces Google
Publicité