Microsoft 365 souci de macro avec plusieurs else

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,

Je m'adresse à nos ténors préférés car je ne sais pas bien faire un code avec plusieurs "else".

Voici le code que j'ai fait :

VB:
Private Sub Label1_Click()
Sheets("Appels").Range("n1") = 2
    'met 2 à cellule N
 
    If Cells(ActiveCell.Row, 26) = "RdV" Then
    ActiveCell.Offset(0, 15) = "RdV" 'ActiveCell est la cellule col "K"
   'si ligne active col "Z" = "RdV" - laisse "RDV" ligne active col Z

    Else
    If ActiveCell.Offset(0, 15) <> "" And ActiveCell.Offset(0, 15) <> "RdV" _
    And ActiveCell.Offset(0, 15) <> "n/c" And ActiveCell.Offset(0, 15) > 0 Then
    ' si condition ok, ajoute 1 à col "Z" ligne active
    ActiveCell.Offset(0, 15).Value = ActiveCell.Offset(0, 15).Value + 1

    Else
    'si les 2 condtions NON Ok, met 1 à col "Z" ligne active
    ActiveCell.Offset(0, 15) = 1

    End If
    End If
Unload Rep_Entr ' ferme UserForm ouvert
'CalendarX.Show
End Sub
Je l'ai testé et il semble bien fonctionner.

Mais je pense que le code n'est pas bon.

J'ai fait des recherches mais je ne m'y retrouve pas.
Voudriez-vous me corriger ?

Un grand merci par avance,
lion el :)
 
Dernière édition:

Deadpool_CC

XLDnaute Accro
Sinon une autre manière de l'écrire
VB:
Private Sub Label1_Click()
Sheets("Appels").Range("n1") = 2
    'met 2 à cellule N
   
    If Cells(ActiveCell.Row, 26) = "RdV" Then
        ActiveCell.Offset(0, 15) = "RdV"
        'si ligne active col "Z" = "RdV" - laisse "RDV" ligne active col Z
    Else
        Select Case ActiveCell.Offset(0, 15).Value
            Case Not "RdV", Not "n/c", Is > 0
                ActiveCell.Offset(0, 15).Value = ActiveCell.Offset(0, 15).Value + 1
            Case Else
                ActiveCell.Offset(0, 15).Value = 1
        End Select
    End If
Unload Rep_Entr ' ferme UserForm ouvert
'CalendarX.Show
End Sub

après si c'est sur la logique que tu veux un conseil, faut nous dire ce que tu veux faire en français pour voir si tes tests sont bons :)
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Voici le code que j'ai fait :
Je l'ai testé et il semble bien fonctionner.
Mais je pense que le code n'est pas bon.
mon code du #post 1 fonctionne :)
Donc pour résumer, il faut qu'on corrige un code qui n'est peut-être pas bon (d'après... ton intuition !), sans savoir ce qu'il doit faire, alors qu'il fonctionne déjà !... 🤪


Vu que le code de #1 fonctionne mais qu'il n'est pas bon et qu'on n'a pas d'explication sur ce que ça doit faire, moi je te propose un code qui ressemble à #1 et ses commentaires car je sais que mon code est absolument génial et parfait aussi bien dans son écriture que dans sa logique et son fonctionnement. Alors n'hésite pas, utilise-le, c'est d'la bombe, je te le garanti !
VB:
Private Sub Label1_Click()
'
    ' Met 2 dans la cellule N1
    Sheets("Appels").Range("N1") = 2

    ' Si col "Z" ligne active <> "RdV"
    If Cells(ActiveCell.Row, 26) <> "RdV" Then

        If IsNumeric(Cells(ActiveCell.Row, 26)) And Cells(ActiveCell.Row, 26) > 0 Then
            ' Si col "Z" ligne active > 0 on lui ajoute 1
            Cells(ActiveCell.Row, 26).Value = Cells(ActiveCell.Row, 26).Value + 1
        Else
            ' Si col "Z" ligne active <= 0 on met 1 dedans
            Cells(ActiveCell.Row, 26) = 1
        End If

    End If

    ' Ferme le UserForm ouvert
    Unload Rep_Entr
'    CalendarX.Show

End Sub
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
244
Réponses
21
Affichages
1 K

Statistiques des forums

Discussions
314 780
Messages
2 112 883
Membres
111 691
dernier inscrit
pino418