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

cs_JPh007 Messages postés 37 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 17 juillet 2012 - 11 déc. 2010 à 17:28
cs_JPh007 Messages postés 37 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 17 juillet 2012 - 12 déc. 2010 à 18:56
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

Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
12 déc. 2010 à 11:17
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
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
12 déc. 2010 à 11:41
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+
0
cs_JPh007 Messages postés 37 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 17 juillet 2012
12 déc. 2010 à 18:50
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.
0
cs_JPh007 Messages postés 37 Date d'inscription mardi 12 août 2008 Statut Membre Dernière intervention 17 juillet 2012
12 déc. 2010 à 18:56
(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.
0
Rejoignez-nous