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

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

Marsh Posté le 11-12-2013 à 18:08:28    

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.

Reply

Marsh Posté le 11-12-2013 à 18:08:28   

Reply

Marsh Posté le 12-12-2013 à 13:20:18    

Bonjour,
 
J'ai aperçu ton mess

Reply

Marsh Posté le 12-12-2013 à 13:32:04    

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

Reply

Marsh Posté le 12-12-2013 à 14:58:31    

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.

Reply

Sujets relatifs:

Leave a Replay

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