Importer des données de plusieurs fichiers, sous condition

Importer des données de plusieurs fichiers, sous condition - VB/VBA/VBS - Programmation

Marsh Posté le 04-03-2016 à 11:41:46    

Bonjour à tous,
 
Voilà cela fait quelques jours que je me suis mis au VBA, j'ai pu récolter beaucoup d'informations sur le forum mais je bloque encore sur ce code.
 
Voici mon problème:
Mon doc principal doit récupérer des données de plusieurs fichiers situés dans un même répertoire. Il faut récupérer les données des mêmes cellules pour tous les fichiers, mais à une condition: qu'une cellule spécifique (B26) contienne quelque chose (à l'heure actuelle mon code importe même lorsque les cellules sont vides du coup cela me met plein de 0 dans mon tableau..).
Les données récoltées dans un fichier doivent être collées dans mon fichier principal par ligne (exemple: données du fichier 1 collées en A13, B13 ,C13) et ainsi de suite (exemple: données du fichier 2 collées en A14, B14 ,C14..).
Enfin dans l'idéal, j'aimerai que la macro n'aille chercher qu'une seule fois les données d'un même fichier, car j'ai mis une mise a jour toutes les N minutes, et je ne veux pas importer plusieurs fois les mêmes données.
 
 
Voici mon code (l'import des données fonctionne mais pas la condition):

 
Sub exportdonnées()
 
Dim lig As Integer, p As String, nomfich As String
Application.ScreenUpdating = False 'fige l'écran (pour accélérer)
Range("A13:D65536" ).ClearContents 'efface la plage de restitution
lig = 13 'restitution à partir de la ligne 13
p = ThisWorkbook.Path & "\"
nomfich = Dir(p & "*.xls" ) '1er fichier du dossier
While nomfich <> ""
 
If nomfich <> ThisWorkbook.Name And "[" & nomfich & "]Article_Livrable et Prestations!B26" <> "" Then
 
Cells(lig, 1).Formula = "='" & p & "[" & nomfich & "]Article_Livrable et Prestations'!G17"
Cells(lig, 2).Formula = "='" & p & "[" & nomfich & "]Article_Livrable et Prestations'!B26"
Cells(lig, 3).Formula = "='" & p & "[" & nomfich & "]Article_Livrable et Prestations'!D4"
Cells(lig, 4).Formula = "='" & p & "[" & nomfich & "]Article_Livrable et Prestations'!B20"
 
lig = lig + 1
 
 
Else: Exit Sub
End If
 
nomfich = Dir 'fichier suivant du dossier
Wend
 
End Sub

 
 
 
 
 
J'espère que j'ai été assez clair dans la description du problème.
Un grand merci par avance pour votre aide!!  :)

Reply

Marsh Posté le 04-03-2016 à 11:41:46   

Reply

Marsh Posté le 04-03-2016 à 12:19:10    

 
            Bonjour, bonjour !
 
            Conformément aux règles du forum, merci de baliser le code via l'icône dédiée !
 
            Sinon ne pas confondre du texte - chaîne de caractères actuellement dans la condition -  et une référence - manquante ! - à une cellule
            via par exemple Range
 

Reply

Marsh Posté le 04-03-2016 à 13:13:57    

Bonjour Marc L,
 
Merci pour ta réponse.
 
C'est justement là que je bloque.. Je ne trouve pas de moyen de récupérer les valeurs des cellules (uniquement lorsque celles ci contiennent une donnée) de l'ensemble des fichiers présents dans ce dossier (et donc sans chemin de source défini).
 

Code :
  1. Sub exportdonnées()
  2. Dim lig As Integer, p As String, nomfich As String
  3. Application.ScreenUpdating = False 'fige l'écran (pour accélérer)
  4. Range("A13:D65536" ).ClearContents 'efface la plage de restitution
  5. lig = 13 'restitution à partir de la ligne 13
  6. p = ThisWorkbook.Path & "\"
  7. nomfich = Dir(p & "*.xls" ) '1er fichier du dossier
  8. While nomfich <> ""
  9. If nomfich <> ThisWorkbook.Name And "[" & nomfich & "]Article_Livrable et Prestations!B26" <> "" Then
  10. Cells(lig, 1).Formula = "='" & p & "[" & nomfich & "]Article_Livrable et Prestations'!G17"
  11. Cells(lig, 2).Formula = "='" & p & "[" & nomfich & "]Article_Livrable et Prestations'!B26"
  12. Cells(lig, 3).Formula = "='" & p & "[" & nomfich & "]Article_Livrable et Prestations'!D4"
  13. Cells(lig, 4).Formula = "='" & p & "[" & nomfich & "]Article_Livrable et Prestations'!B20"
  14. lig = lig + 1
  15. Else: Exit Sub
  16. End If
  17. nomfich = Dir 'fichier suivant du dossier
  18. Wend
  19. End Sub

Reply

Marsh Posté le 04-03-2016 à 18:22:56    

 
            Justement dans la ligne de code n°11, il n'y aucune référence à une cellule ‼                          Traduit cette ligne en langage parlé !
 
            Alors qu'à la ligne n°5 il y en a bien une comme du reste les lignes n°13 à 17; j'ai pourtant été clair dans mon précédent message …


Message édité par Marc L le 04-03-2016 à 18:26:30
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed