Macro: Si telle feuille existe parmi les classeurs ouverts...

Signaler
Messages postés
39
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
17 juillet 2012
-
Messages postés
39
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
17 juillet 2012
-
Bonjour,

J'essaye d'écrire une macro, permettant dans un premier temps de détecter parmi les classeurs ouverts la présence d'une feuille, puis dans un second temps de copier 3 plages de cellules de cette feuille et de coller ces 3 plages sur 3 plages d'une autre feuille présent dans un autre classeur déjà ouvert.

Voici mon code:

Sub IMPORTE2()

Dim i As Integer
Dim varControl As Boolean
varControl = False
For i = 1 To Workbooks.Count
If Worksheet.Name = "BHN" Then
MsgBox ("Le ficher est valide, la mise à jour sera effective")
    
    Sheet("BHN 2011.2").Range(A6.E1717) = Sheet(BHN).Range(A6.E1717)
    Sheet("BHN 2011.2").Range(G6.K1717) = Sheet(BHN).Range(G6.K1717)
    Sheet("BHN 2011.2").Range(M6.P1717) = Sheet(BHN).Range(M6.P1717)
    
    varControl = True
    Application.DisplayAlerts = True


End If
Next i
 If varControl = False Then
MsgBox ("Le fichier choisi n'est pas celui demandé. Veuillez chercher le classeur BHN 2011.1 .")

End If
End Sub


Ca ne fonctionne pas visiblement.J'ai toujours le message "Le fichier choisi n'est pas celui demandé. Veuillez chercher le classeur BHN 2011.1 ."

4 réponses

Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
10
Bonjour,

Et as-tu avant le message "Ce fichier est valide...". A mon avis non.

Juste au-dessus tu testes Worksheet.name = xxx, ce qui revient à tester ta feuille courante (qui ne change pas).

Il faudrait changer ton test en ceci:
If Worksheets(i).name=xxx then
endif

ou quelque chose de ce style, je n'ai pas tester. Le but est de te balader dans les différentes feuilles composant la collection WorkSheets.


Calade
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
Salut,

Tu ne boucles que sur la variable i mais pas sur les fichiers !
De plus tu ne spécifie pas le fichier qui doit être trouvé !!!

Sub IMPORTE2()

    Dim i As Integer
    Dim varControl As Boolean
    varControl = False
    For i = 1 To Workbooks.Count
        With Workbooks(i)
            If .Name = "BHN 2011.1.xls" Then 'si on a trouvé le fichier qui nous interesses
                On Error Resume Next
                With .Worksheets("BHN") ' si cette feuille n'existe pas une erreur sera renvoyée
                    If Err = 0 Then ' si pas d'erreur
                        varControl = True
                        On Error GoTo 0
                        MsgBox ("Le ficher est valide, la mise à jour sera effective")
                        
                        Sheets("BHN 2011.2").Range(A6.E1717) = Sheets(BHN).Range(A6.E1717)
                        Sheets("BHN 2011.2").Range(G6.K1717) = Sheets(BHN).Range(G6.K1717)
                        Sheets("BHN 2011.2").Range(M6.P1717) = Sheets(BHN).Range(M6.P1717)
                    Else
                        Err.Clear
                    End If
                End With
                On Error GoTo 0
                Application.DisplayAlerts = True ' très dangereux d'utiliser cette propriété
                                                     ' d'autant que je ne vois pas l'intérêt ici
            End If
        End With
    Next i
    If varControl = False Then
        MsgBox ("Le fichier choisi n'est pas celui demandé. Veuillez ouvrir le classeur BHN 2011.1 .")
    End If
End Sub


Beaucoup d'erreur de syntaxes, un code mal construit.
Le code que je t'ai donné te montre le chemin mais ne résout pas tout!

A+
Messages postés
39
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
17 juillet 2012

Merci beaucoup, je vais travailler à partir de ça.

On m'a dit que il n'était pas judicieux de faire intervenir la gestion d'erreur. Mais si ça fonctionne je me baserais dessus.

Je vous tiens au courant.
Messages postés
39
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
17 juillet 2012

(je fais un double post il me semble que c'est interdit mais je n'arrive pas à modifier mon propre post...)

J'oubliais de préciser que je ne chercher pas un fichier précis car son nom peut être modifié par l'utilisateur. La recherche doit s'effectuer sur l'ensemble des fichiers excel ouverts. Je vais voir comment m'en sortir. Mici beaucoup encore.