Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1002 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Importer des données de plusieurs fichiers, sous condition

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Importer des données de plusieurs fichiers, sous condition

n°2276943
bibi33130
Posté le 04-03-2016 à 11:41:46  profilanswer
 

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!!  :)

mood
Publicité
Posté le 04-03-2016 à 11:41:46  profilanswer
 

n°2276947
Marc L
Posté le 04-03-2016 à 12:19:10  profilanswer
 

 
            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
 

n°2276952
bibi33130
Posté le 04-03-2016 à 13:13:57  profilanswer
 

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

n°2276988
Marc L
Posté le 04-03-2016 à 18:22:56  profilanswer
 

 
            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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Importer des données de plusieurs fichiers, sous condition

 

Sujets relatifs
ouverture de fichiersVBA : manipuler des fichiers dont le nom a des caractères spéciaux
Diverses questions VBALien hypertexte dans un tableau à partir d'une base de données?
Navigation intuitive dans une base de donnéesAffichage de données temporelles dans Google Earth
Formulaire avec plusieurs submit / Safariimporter données vers autre fichier excel automatiquement
Gestion et partage des données d'un app 
Plus de sujets relatifs à : Importer des données de plusieurs fichiers, sous condition


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR