[VBA] trouver une feuille excel ds pls docs

Résolu
titco Messages postés 3 Statut Membre -  
titco Messages postés 3 Statut Membre -
Bonjour,

je suis toute nouvelle sur ce forum et j'ai besoin d'aide. En fait je voudrais faire une truc en VBA mais je ne sais pas si c'est possible. Sachant que je ne sais pas programmer en VBA je préfère me renseigner quand à la faisabilité de la chose avant d'essayer de me dépatouiller de ce langage!

Alors voilà,
j'ai plusieurs fichiers Excel tous de la même forme : plusieurs feuilles contenant des tableaux tous de la même forme. Dans tous les fichiers Excel, les feuilles se nomment de la même manière. Admettons que ce soit des années.
Je voudrais dans un nouveau fichier Excel faire l'addition de la valeur de la cellule C20R22 pour la feuille '2006'. Sachant que je n'ai pas la feuille '2006' dans tous les fichiers Excel.
Est-ce que cela est possible?

Je ne sais pas si j'ai été assez claire! Merci d'essayer de me comprendre!!!!
Configuration: Windows XP
Internet Explorer 6.0

3 réponses

  1. Utilisateur anonyme
     
    Bonjour,

    Oui cela est possible, mais pas évident si vous ne connaissez pas VBA.

    Quoi qu'il en soit, voici un exemple type de ce que je comprends de
    votre besoin :

    Sub RechercheValeurDansFichierExcel()
    
        Const RepSource = "C:\Documents local\essai\"
        
        Dim objFSO As Variant, objFichier As Variant, objRepertoire As Variant
        Dim Longueur As Integer, Compteur As Integer, Extension As String
        Dim Boite() As String
    
        Dim NumFic As Integer, Boucle As Integer
        Dim Valeur As String, Feuille As Worksheet
        
    
    
        Set objFSO = CreateObject("Scripting.FileSystemObject")
    
        Set objRepertoire = objFSO.GetFolder(RepSource)
        Compteur = 0
        If (objRepertoire.Files.Count > 0) Then
            For Each objFichier In objRepertoire.Files
                Longueur = Len(objFichier.Name)
                Extension = Mid(objFichier.Name, Longueur - 2)
                If (Extension = "xls") Then
                    ReDim Preserve Boite(Compteur) As String
                    Boite(Compteur) = objFichier.Name
                    Compteur = (Compteur + 1)
                End If
            Next
        End If
        
        For Boucle = 0 To (Compteur - 1)
            Workbooks.Open Filename:=(RepSource & Boite(Boucle))
            For Each Feuille In ActiveWorkbook.Worksheets
                If (Feuille.Name = "2006") Then
                    Valeur = Range("C20").Value
                    Workbooks("Principal.xls").ActiveSheet.ActiveCell.Offset(0, 0).Value = Valeur
                    Workbooks("Principal.xls").ActiveSheet.ActiveCell.Offset(1, 0).Select
                End If
            Next Feuille
            ActiveWorkbook.Close
        Next Boucle
    
        Set objFSO = Nothing
        Set objRepertoire = Nothing
    
    End Sub
    


    Ceci bien sur en supposant que le fichier récupérant les données se nomme [ Principal.xls ].

    Lupin
    0
  2. titco Messages postés 3 Statut Membre
     
    Merci!

    je teste cela (enfin j'essaie de bidouiller ce que je peux) et je vous dit!
    Et je ne connais pas VBA mais j'ai appris (mais ça commence à remonter!) la programmation objet, donc je devrais m'en sortir...
    0
  3. titco Messages postés 3 Statut Membre
     
    Alors après bidouillage de ma part, cela fonctionne très bien... merci bcp!
    Plus qu'à me creuser un peu les méninges pour savoir comment je peux faire pour automatiser le plus possibles toutes les cases à remplir de mon tableau ;-)

    Encore merci
    0