VBA communiquer entre les fichiers
Répondre à la discussion
Affichage des résultats 1 à 18 sur 18

VBA communiquer entre les fichiers



  1. #1
    julienslr

    VBA communiquer entre les fichiers


    ------

    Bonjour,

    Je me trouves confronté à un problème dont je ne trouves pas la réponse sur internet. C'est pourquoi je vous pose la question.

    Ma requête est la suivante :
    En VBA, comment faire pour récupérer les noms de toutes les feuilles d'un fichier fermé, pour ensuite les stockés dans des cellules ?

    Merci pour votre aide.

    -----

  2. #2
    cherbe

    Re : VBA communiquer entre les fichiers

    Citation Envoyé par julienslr Voir le message
    En VBA, comment faire pour récupérer les noms de toutes les feuilles d'un fichier fermé, pour ensuite les stockés dans des cellules ?
    Bonjour
    Je ne vois pas comment obtenir de l'information contenue dans un fichier sans l'ouvrir ?
    A mon avis, il faut ouvrir le fichier, récupérer les noms d'onglets et fermer.

  3. #3
    julienslr

    Re : VBA communiquer entre les fichiers

    Bonjour cherbe, est-il possible de le faire en passant par du VBA ? Comment ?
    Dernière modification par julienslr ; 11/04/2016 à 08h10.

  4. #4
    cherbe

    Re : VBA communiquer entre les fichiers

    Citation Envoyé par julienslr Voir le message
    Bonjour cherbe, est-il possible de le faire en passant par du VBA ? Comment ?
    Je ne me souviens plus de la procédure d'ouverture de fichier qui n'est pas triviale. Met-toi en mode enregistrement, ouvre et ferme un fichier, copie-colle le code généré.
    Pour parcourir la collection sheets (onglets) :
    Code:
    For compteur=0 to  Sheets.Count -1
         liste=liste & " " & Sheets(compteur).Name
    Next
    Msgbox "Voici la liste des onglets : & liste
    Dernière modification par cherbe ; 11/04/2016 à 09h53.

  5. A voir en vidéo sur Futura
  6. #5
    julienslr

    Re : VBA communiquer entre les fichiers

    Merci pour cette réponse cherbe, je vais mettre ça en œuvre.

  7. #6
    julienslr

    Re : VBA communiquer entre les fichiers

    J'ai réussi à obtenir ce que je voulais, merci cherbe !

    Pour ceux à qui ça pourrais servir, voici le programme :

    Code:
    Sub recup_nom()
    '
    ' recup_nom Macro
    '
    
    '
        Workbooks.Open Filename:= _
            "chemin d'accès et nom du fichier contenant les feuilles.xlsx" 'fichier où l'on veux récupérer le nom des feuilles
        
        
        
        For compteur = 1 To Sheets.Count
        liste = Sheets(compteur).Name
        
        Windows("fichier de destination.xlsm").Activate 'fichier oùu l'on veux afficher le nom des feuilles
        Sheets("test2").Select
        Cells(compteur + 1, 2) = liste
        Windows("Nom du fichier contenant les feuilles.xlsx").Activate
        
        Next
        
        Windows("Nom du fichier contenant les feuilles.xlsx").Close
        
    End Sub
    Je rappel le principe, ce code va permettre à un fichier excel d'aller ouvrir un autre fichier excel et récupérer le nom de toutes les feuilles de celui-ci.

  8. #7
    cherbe

    Re : VBA communiquer entre les fichiers

    Bonjour
    Reste à optimiser tout ça car activer le fichier source puis le fichier cible à chaque onglet prend énormément de temps.
    Ce serait beaucoup plus rapide en stockant les noms d'onglets dans une variable tableau (array).

  9. #8
    julienslr

    Re : VBA communiquer entre les fichiers

    Bonjour,

    Je me pose une question, est-il possible de remplacer le morceau du code suivant :

    Windows("fichier de destination.xlsm").Activate

    par quelque chose qui désignerais le fichier, non pas par son nom, mais, par le fichier qui contient la macro ?

    Car le problème que j'ai vite rencontré est que si je renomme mon fichier, le programme ne fonctionne plus. Ce qui est logique.

    Merci

  10. #9
    cherbe

    Re : VBA communiquer entre les fichiers

    Citation Envoyé par julienslr Voir le message
    Bonjour,
    Je me pose une question, est-il possible de remplacer le morceau du code suivant :
    Windows("fichier de destination.xlsm").Activate
    par quelque chose qui désignerais le fichier, non pas par son nom, mais, par le fichier qui contient la macro ?
    Merci
    Si tu fais un appel à l'aide du nom de la macro, ça va l'exécuter et ce n'est pas ce que tu cherches. Et comme elle est déjà active, tu auras une erreur.
    Tu peux récupérer et stocker le nom du fichier dans une variable et utiliser ce nom par la suite en insérant ceci au début de la routine :
    Code:
    toto=activeworkbook.name

  11. #10
    julienslr

    Re : VBA communiquer entre les fichiers

    Super, encore une fois, merci cherbe !

  12. #11
    julienslr

    Re : VBA communiquer entre les fichiers

    Je n'arrive pas à utiliser cette fonction au niveau de cette ligne :

    Windows("cefichier").Activate

    Comment écrire ce passage ? J'ai essayé pas mal de choses sans résultats.

  13. #12
    cherbe

    Re : VBA communiquer entre les fichiers

    et
    Code:
    workbooks("ce_fichier").activate
    ?

  14. #13
    julienslr

    Re : VBA communiquer entre les fichiers

    Cela ne fonctionne pas, voila ce que j'ai fais pourtant :

    Code:
    ce_fichier = ActiveWorkbook.Name    'Placé au début du programme
    
    [...]
    
    Workbooks("ce_fichier").Activate

  15. #14
    cherbe

    Re : VBA communiquer entre les fichiers

    Citation Envoyé par julienslr Voir le message
    Cela ne fonctionne pas, voila ce que j'ai fais pourtant :
    Code:
    ce_fichier = ActiveWorkbook.Name    'Placé au début du programme
    Workbooks("ce_fichier").Activate
    C'est normal que ça ne marche pas. On ne met jamais de quotes autour d'un nom de variable. Une chaine de caractères entre quotes est lue comme chaine de caractères ! Le programme cherche un fichier qui s'appelle ce_fichier et évidemment, il n'existe pas.

    Enlève les quotes !
    Dernière modification par cherbe ; 15/04/2016 à 13h18.

  16. #15
    julienslr

    Re : VBA communiquer entre les fichiers

    Exacte suis-je bête. Mais cela ne fonctionne toujours pas. Voici le code au complet, peux être que vous y verrez vous une erreur ?

    Code:
    Sub recup_of()
    '
    '
    Application.ScreenUpdating = False
    '
        ce_fichier = ActiveWorkbook.Name
        
        Workbooks.Open Filename:= _
            "blabla.xlsx"
        
        j = 2
        
        For compteur = 1 To Sheets.Count
        
        Sheets(compteur).Select
        Nb_lignes = Range("B7").End(xlDown).Row
        
            
            For i = 7 To Nb_lignes
            
            Cells(i, 1).Select
            couleur = Selection.Interior.Color
            
            If couleur = 13434828 Then
            
            Selection.Copy
            Workbooks(ce_fichier).Activate
            Sheets("base encours").Select
            Cells(j, 2).Select
            ActiveSheet.Paste
            
            j = j + 1
            
            Windows("blabla.xlsx").Activate
            
            End If
            
            Next
        
        
        Next
        
        Windows("blabla.xlsx").Close
        Application.ScreenUpdating = True
    End Sub

  17. #16
    cherbe

    Re : VBA communiquer entre les fichiers

    Qu'est-ce qui ne marche pas ? Ça bloque sur quelle ligne ?

  18. #17
    julienslr

    Re : VBA communiquer entre les fichiers

    Alors que ce programme ne fonctionnait pas après plusieurs tentatives, aujourd'hui ça fonctionne normalement. J'ai changé le nom du fichier d'origine et cela ne pose pas de problème. Je ne sais pas pourquoi ça ne fonctionnais pas. Merci pour votre aide!

  19. #18
    cherbe

    Re : VBA communiquer entre les fichiers

    Citation Envoyé par julienslr Voir le message
    Alors que ce programme ne fonctionnait pas après plusieurs tentatives, aujourd'hui ça fonctionne normalement. J'ai changé le nom du fichier d'origine et cela ne pose pas de problème. Je ne sais pas pourquoi ça ne fonctionnais pas. Merci pour votre aide!
    Ce problème peut être dû à la présence de caractères non conventionnels dans le nom du fichier (accents...).

Discussions similaires

  1. Communiquer entre Labview et un Itouch ou téléphone portable
    Par Yonel31 dans le forum Électronique
    Réponses: 4
    Dernier message: 24/02/2011, 21h05
  2. transfert de fichiers entre 2 DD
    Par invite2297e396 dans le forum Matériel - Hardware
    Réponses: 10
    Dernier message: 27/04/2008, 18h12
  3. Transfert de nombreux fichiers entre 2 pc
    Par invited7d9c64b dans le forum Internet - Réseau - Sécurité générale
    Réponses: 8
    Dernier message: 30/08/2007, 00h12
  4. Transfert de fichiers entre 2 PC
    Par freesbeep dans le forum Matériel - Hardware
    Réponses: 58
    Dernier message: 30/12/2006, 14h59