[VBA] trouver une feuille excel ds pls docs

Résolu/Fermé
titco Messages postés 3 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 5 mars 2007 - 5 mars 2007 à 10:33
titco Messages postés 3 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 5 mars 2007 - 5 mars 2007 à 15:43
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!!!!
A voir également:

3 réponses

Utilisateur anonyme
5 mars 2007 à 14:03
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
titco Messages postés 3 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 5 mars 2007
5 mars 2007 à 14:21
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
titco Messages postés 3 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 5 mars 2007
5 mars 2007 à 15:43
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