Se connecter avec
S'enregistrer | Connectez-vous

Macro fichier de synthèse

Dernière réponse : dans Programmation

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 :

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

Autres pages sur : macro fichier synthese

Lassé par la pub ? Créez un compte
Expert Programmation

Ton code est illisible. Merci de lire le règlement et de l'appliquer !
Pour info, les boutons et permettent de modifier un message. Pratique pour mettre ses messages en conformité !


- 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.

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 :

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

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"

Lassé par la pub ? Créez un compte