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

  • Initiateur de la discussion Initiateur de la discussion math803
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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 !!!!!^^
 
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"
 
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...
 
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.
 
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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
258
Réponses
16
Affichages
1 K
Réponses
3
Affichages
671
Réponses
2
Affichages
517
Réponses
35
Affichages
2 K
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
821
Retour