Problème de message et de boucle

Bonjour à tous,

Grâce à l'aide du forum, j'ai pu finaliser un projet Excel.... merci à tous

Maintenant, j'ai juste un problème de présentation. Dans l'exemple ci-dessous, il est possible de créer un onglet selon un modèle en le nommant.

5dupliquer.xlsm (29.54 Ko)

Si l'onglet existe déjà, il y a un message d'alerte. Si l'onglet peut être crée, il y a un message vide...

J'ai tenté de modifier le code comme ça :

If FeuilleExiste(nameOng) = True Then
    msg = msg & "L'onglet " & nameOng & " éxiste déjà" & Chr(10)

    If FeuilleExiste(nameOng) = False Then
    msg = msg & "Création de l'onglet " & nameOng & " ?" & Chr(10)
     

En fait, je comprends du message d'erreur qu'il y a un IF en trop.

Je ne sais pas comment le gérer...

Bon, c'est de la cosmétique... mais je suis preneuse de toute bonne idée sur le sujet.

Merci à tous

Petitejiji

Bonjour,

Effectivement pourquoi 2 IF puisque soit c'est =True ou False

If FeuilleExiste(nameOng) = True Then

msg = msg & "L'onglet " & nameOng & " éxiste déjà" & Chr(10)

else

msg = msg & "Création de l'onglet " & nameOng & " ?" & Chr(10)

end if

Bonjour,

Il y a un If en Trop ou bien un End If manquant .

Tout dépend de ce que vous voulez faire , un end if mal placé et le résultat n'est pas celui attendu.

Avec lequel des deux IF est "rattaché" le Else ?

A+

Edit : bonjour Xmenpl.

Avec le code proposé, si feuille... = true then message puis sorti du test re message. il faudrait un else?

Bonjour,

Edit : bonjour Xmenpl.

Avec le code proposé, si feuille... = true then message puis sorti du test re message. il faudrait un else?

justement je viens de me rendre compte que dans ma première version il exécuterait à

chaque fois la deuxième partie.

Bien vu Algo

Bonjour,

Merci beaucoup pour vos réponses.

Le code initial était le suivant

Sub AjoutOnglet()

Dim Ws As Worksheet
Dim nameOng As String, i As Integer

dl = Sheets("Feuil1").Range("C" & Rows.Count).End(xlUp).Row

For i = 4 To dl

Application.ScreenUpdating = False

    Set Ws = Sheets("Modèle")
    Ws.Copy After:=Sheets(Sheets.Count)
    Sheets("Feuil1").Activate
    nameOng = Sheets("Feuil1").Range("C" & i)

    If FeuilleExiste(nameOng) = True Then
    msg = msg & "L'onglet " & nameOng & " éxiste déjà" & Chr(10)

    Application.DisplayAlerts = False
    Sheets("Modèle (2)").Delete
    Sheets("Feuil1").Select
    'Exit Sub
    Else
        With Sheets("Modèle (2)")
            .Name = nameOng
            .Visible = True
            .Activate
            .Range("C2") = Sheets("Feuil1").Range("C" & i)
        End With
        End If

        Sheets("Feuil1").Select
Next i
i = i + 1
MsgBox msg  'message avec onglets déjà existants

Call listeonglet

End Sub

Sauf que avec ce code, soit :

  • l'onglet existe déjà et le message qui s'affiche est "L'onglet bidule existe déjà". L'onglet n'est pas créé
  • l'onglet n'existe pas et le message est vide. L'onglet est créé

Je souhaite juste ajouter du texte dans le message vide

Merci à tous

Petitejiji

Bonjour Petitejiji, Xmenpl, AlgoPlus,

Une variante qui affiche le message uniquement si l'onglet existe déjà....(inconvénient: 1 clic par onglet déjà crée, )

9dupliquerv6.xlsm (29.85 Ko)

Cordialement,

Salut Xmenpl, AlgoPlus et Xorsankukai,

Merci beaucoup pour vos réponses.... ça me va parfaitement !!!

Bonne journée à tous

Petitejiji

Rechercher des sujets similaires à "probleme message boucle"