Problème d'interprétation d'un code VBA

math803

XLDnaute Nouveau
Bonjour a tous,

J'aurai juste besoin de votre aide pour bien comprendre la différence entre le IF et le ELSE dans le code suivant. Qu'est ce que fait l'un et pas l'autre ??

Grand merci à celui qui m'aidera.


Sub ARCHIVER()


Dim strNomFeuille As String
Dim onglet As Worksheet

strNomFeuille = Sheets("feuil1").Range("F2").Value

If IsWorksheet("strNomFeuille") Then

Sheets("feuil1").Range("c3:c13").Copy
onglet.Select
Cells(3, Range("IV3").End(xlToLeft).Column + 1).PasteSpecial Paste:=xlPasteValues
Cells(16, Range("IV16").End(xlToLeft).Column + 1) = Date
Cells(17, Range("IV17").End(xlToLeft).Column + 1) = Time

Else
For i = 1 To Sheets.Count
If ActiveWorkbook.Sheets(i).Name = CStr(Sheets("feuil1").Range("F2").Value) Then
Sheets("feuil1").Range("c3:c13").Copy
Sheets(i).Select
Cells(3, Range("IV3").End(xlToLeft).Column + 1).PasteSpecial Paste:=xlPasteValues
Cells(16, Range("IV16").End(xlToLeft).Column + 1) = Date
Cells(17, Range("IV17").End(xlToLeft).Column + 1) = Time

Exit Sub
End If
Next i


End Sub

Public Function IsWorksheet(strName As String) As Boolean
Dim objWorksheet As Worksheet
IsWorksheet = False
For Each objWorksheet In ActiveWorkbook.Worksheets
If objWorksheet.Name = strName Then
IsWorksheet = True
End If
Next
End Function


MATH803
 

ayaflo

XLDnaute Junior
Re : Problème d'interprétation d'un code VBA

Bonjour Math,

Le IF, effectue un test (dans ton exemple ton test est sur le nom de la feuille : If IsWorksheet("strNomFeuille") Then). si ce test est VRAI, alors le système effectue les lignes de code qui sont dans le IF. Si ce test est FAUX tu bascules directement dans le Else et dans ce cas là il effectue les lignes qui sont dans le Else.

Espérant que c'est assez clair.

Ayaflo
 

math803

XLDnaute Nouveau
Re : Problème d'interprétation d'un code VBA

Merci de ta réponse Ayaflo mais justement mon problème est plus sur la compréhension du code dans le If et dans le Else et je t'avoue que je vois pas trop la différence entre les deux.

Comme je le comprend, le IF chercher si une feuille appelé X existe dans le classeur et si c'est vrai alors le code après est excuté

Et le ELSE balaie tous les onglets et si un onglet à le nom recherché alors le code est exécuté pour cet onglet..

Voila le réel problème..

HELP !!!!!^^
 

pat01200

XLDnaute Occasionnel
Re : Problème d'interprétation d'un code VBA

Bonjour math803,

En gros, ton code est fait pour exécuter une action à partir d'une valeur précise et il dit à peu près ceci :

"Si (If) tu trouves cette valeur dans la présente feuille, alors fait ça
Autrement (Else) va chercher dans les autres feuilles et si tu la trouves, fait ça"
 

math803

XLDnaute Nouveau
Re : Problème d'interprétation d'un code VBA

Merci de vos réponse mais je comprend bien le principe du If et du Else..

Ce que je n'arrive pas c'est à différencier les deux cas..Pour moi les deux font la même chose (relire mon message précédent)


Quelqu'un a la réponse ?

Merci par avance...
 

ayaflo

XLDnaute Junior
Re : Problème d'interprétation d'un code VBA

Re Math, le fil,

Dans le If et le Else les actions à réaliser ne change pas, ce sont exactement les mêmes. par contre ce qui doit poser problème c'est que dans le Else, tu as insérer une boucle qui parcoure toutes tes feuilles (For i = 1 To Sheets.Count) donc même si le test du premier If est Faux, je pense que la feuille sera automatiquement reprise par la Boucle, c'est pour ça que tu à l'impression que les deux cas sont similaires dans l'éxécution.

Je pense que tu pourrais mettre des msgbox, pour voir dans quel niveau du code tu te trouves et pour comprendre les paramêtres qui font que tu te retrouves dans le Else ou le IF.
 

bof

XLDnaute Occasionnel
Re : Problème d'interprétation d'un code VBA

Bonjour,

dans le cas présent ton IF est toujours FAUX car tu as mis des guillemets ou il n'en fallait pas :

If IsWorksheet("strNomFeuille") Then...

strNomfeuille étant une variable il ne faut pas de guillemets.

A+
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 488
Messages
2 088 864
Membres
103 979
dernier inscrit
imed