Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…