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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA-Excel] Comment appeler un fichier pour récupérer des données ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA-Excel] Comment appeler un fichier pour récupérer des données ?

n°2213293
tigrou666
Posté le 11-12-2013 à 18:08:28  profilanswer
 

Bonjour,  
 
J'ai un problème que je n'arrive pas à résoudre.
Je me permet
 
J'ai un fichier (nommé "Films_2013-10.xlsm" ) avec la liste de mes films.  
Il y a un onglet Sommaire.  
Puis un onglet "0-D" puis "E-I", "J-N", "O-S", "T-Z".  
Enfin trois onglets "A telecharger", "A venir" et "Modifs à faire".  
 
Les colonnes des onglets sont les suivantes "Titre", "Taille fichier", "Etat", "Qualité", "Langue", "Genre", "Bon format", "Commentaire".  
 
Je cherche à copier les valeurs des onglets "0-D", "E-I", "J-N", "O-S", "T-Z" dans la feuille appelée "Liste" d'un nouveau classeur. Pour l'explication c'est un fichier de vérification (nommé "Fichier de verif.xlsm" qui me permet de comparer la liste extraite des fichiers de mon disque dur par rapport a ma liste Excel.  
 
En fouillant sur le site j'ai trouvé la macro suivante sur un autre forum (et je remercie l'auteur d'ailleurs).  
 
 

Code :
  1. Sub LISTING()
  2. 'définition des classeurs
  3. Dim Classeur As Workbook
  4. Set Classeur = ThisWorkbook
  5. For i = 3 To 28 'i=3=A ; i=28=Z car 26 lettres dans l'alphabete ;-)
  6.   Sheets(i).Activate 'activation de l'onglet
  7.   'copie du range voulu à l'endroit voulu
  8.   Sheets(i).Range("A1:G2000" ).Copy Classeur.Sheets("Liste" ).Range("A100000" ).End(xlUp)(2)
  9. Next i
  10. Sheets("Liste" ).activate
  11. End Sub


 
 
 
Je l'ai un peu modifiée pour qu'elle ne prenne que les colonnes A et B, le titre et la taille (le reste ne m'intéresse pas pour la comparaison) et qu'elle ne me reprennent pas la ligne de titre.  
 
 

Code :
  1. Sub LISTING()
  2. Dim Classeur As Workbook
  3. Set Classeur = ThisWorkbook
  4. For i = 3 To 8 'i=2=A ; i=27=Z car 26 lettres dans l'alphabet ;-)
  5.   Sheets(i).Activate
  6.   Sheets(i).Range("A2:B15000" ).Copy Classeur.Sheets("Liste" ).Range("A100000" ).End(xlUp)(2)
  7.   Sheets("Liste" ).Activate
  8. Next i
  9. End Sub


 
 
J'ai testé la macro en créant un onglet "Liste" juste après l'onglet sommaire dans le fichier "Films_2013-10.xlsm" et elle marche très bien.  
Cependant je ne sais absolument pas comment la transférer dans le fichier "Fichier de verif.xlsm" et qu'elle aille lire "Films_2013-10.xlsm" (je n'y connais absolument rien en VBA).  
 
Merci beaucoup de votre aide.

mood
Publicité
Posté le 11-12-2013 à 18:08:28  profilanswer
 

n°2213415
juliedu63
Posté le 12-12-2013 à 13:20:18  profilanswer
 

Bonjour,
 
J'ai aperçu ton mess

n°2213418
juliedu63
Posté le 12-12-2013 à 13:32:04  profilanswer
 

Bonjour,
J'ai apercu ton message et je pense pouvoir le résoudre.
ce code est à écrire dans ton fichier Fichier de verif.xlsm.  
N'oublies pas d'insérer un onglet "Liste" au fichier Films_2013-10.xlsm.
 

Code :
  1. Sub LISTING()
  2. 'Classeur correspond au chemin de ton fichier dans lequel tu veux copier tes informations
  3. Dim Classeur As Workbook
  4. Set Classeur = "C:\MonChemin\Films_2013-10.xlsm"
  5. For i = 3 To 8 'i=2=A ; i=27=Z car 26 lettres dans l'alphabet ;-)
  6. Sheets(i).Activate
  7. 'je te traduis la ligne d'après :
  8. 'tu prends les élements de Films_2013-10.xlsm(classeur) que tu copies dans ton fichier ouvert (Fichier de verif.xlsm) dans l'onglet Liste (ThisWorkbook.Sheets("Liste" )
  9. Classeur.Sheets(i).Range("A2:B15000" ).Copy ThisWorkbook.Sheets("Liste" ).Range("A100000" ).End(xlUp)(2)
  10. Sheets("Liste" ).Activate
  11. Next i
  12. End Sub


 
Essai et dis moi si cela fonctionne !
Cordialement,
 
Julie  :p

n°2213428
tigrou666
Posté le 12-12-2013 à 14:58:31  profilanswer
 

Bonjour juliedu63.
 
En fait ce n'est pas tout à fait ça.
Désolé si je me suis mal exprimé mais le but est de rapatrier les données depuis le fichier "Films_2013-10.xlsm" vers le fichier "Fichier de verif.xlsm"
 
Par contre ta réponse m'a aidé puisque j'ai réussi a modifier la macro pour faire ce que je veux.
Il fallait que je déclare une deuxième variable.
 

Code :
  1. Sub LISTING()
  2. Dim FichierVerif As Workbook 'On defini comme variable FichierVerif pour le fichier de verification
  3. Set FichierVerif = ThisWorkbook
  4. Dim FichierListe As Workbook  'On defini comme variable FichierListe pour le fichier avec la liste des films
  5. Set FichierListe = GetObject("J:\Laurent\Cle\Perso\Souvent modif\Listes\Films\Films_2013-12.xlsx" )
  6. For i = 2 To 7 'On affecte a i un nombre variable
  7.   FichierListe.Sheets(i).Activate 'On affecte a i des onglets
  8.   FichierListe.Sheets(i).Range("A2:B20000" ).Copy FichierVerif.Sheets("ListeCompleteFichier" ).Range("A100000" ).End(xlUp)(2) 'i va aller chercher dans le fichier de liste l'onglet i et copier les valeurs des deux premieres colonnes (moins les titres) dans l'onglet ListeCompleteFichier du fichier de verif
  9.   FichierVerif.Sheets("ListeCompleteFichier" ).Activate
  10. Next i 'On passe a la valeur de i suivante (donc l'onglet suivant)
  11. End Sub


 
Merci beaucoup donc.


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

  [VBA-Excel] Comment appeler un fichier pour récupérer des données ?

 

Sujets relatifs
[PowerShell] Compte le nombre de ligne d'un fichiercopier le contenue d'un fichier dans un tableau
[HTML/JS] Créer et télécharger un fichier CSV avec ieextraction de donnees
Help Problème VBA: Seriescollection.namerecherche un moyen d'integrer du css a un fichier js
ecrire dans un fichier excel[C]Détection de fin de fichier...
Balise html pour fichier .g3w 
Plus de sujets relatifs à : [VBA-Excel] Comment appeler un fichier pour récupérer des données ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR