Macro: Si telle feuille existe parmi les classeurs ouverts...
cs_JPh007
Messages postés37Date d'inscriptionmardi 12 août 2008StatutMembreDernière intervention17 juillet 2012
-
11 déc. 2010 à 17:28
cs_JPh007
Messages postés37Date d'inscriptionmardi 12 août 2008StatutMembreDernière intervention17 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 ."
A voir également:
Macro: Si telle feuille existe parmi les classeurs ouverts...
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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!
cs_JPh007
Messages postés37Date d'inscriptionmardi 12 août 2008StatutMembreDernière intervention17 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.