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

Microsoft 365 code s'execute 2 fois

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 !

dereck

XLDnaute Nouveau
Bonjour a tous,
voici le souci , j'ai un textbox pour lequel le code est le suivant :

VB:
Private Sub AeroportDep_Change()

Dim derligne, i, j, C, pays, code

AeroportDep.Value = UCase(AeroportDep.Value)

If Len(AeroportDep.Value) = 3 Then


    Workbooks.Open Filename:="D:\Documents\Temp_Cotation\CHRONO COTATION 2019 PNR Temp.xlsm"
    Workbooks("CHRONO COTATION 2019 PNR Temp.xlsm").Activate
    code = AeroportDep.Value
    Sheets("Code").Select
    'Range("A2").Select
    'Range(Selection, Selection.End(xlDown)).Select
       Set C = Columns("A:A").Find(What:=code, After:=ActiveCell, LookIn:=xlFormulas _
    , LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)
    
        If C Is Nothing Then
                
            MsgBox "Code Aéroport Inconnu"
            Workbooks("CHRONO COTATION 2019 PNR Temp.xlsm").Close
            Exit Sub
            Else
            C.Select
            pays = ActiveCell.Offset(0, 1).Value
            PaysDep.Value = pays
            End If
        Set C = Nothing
Workbooks("CHRONO COTATION 2019 PNR Temp.xlsm").Close
End If

End Sub

et donc une fois que j'ai mes 3 lettre dans le textbox en fait le code s'execute 2 fois de suite et je ne comprends pas pourquoi 🙄

Merci par avance de votre aide
 
Solution
Bonsoir Dereck, bonsoir le forum,

Ta macro agit au changement de la TextBox. Le seul fait de changer la casse relance automatiquement l'événement Change. Si tu fais tourner pas à pas (touche [F8]) tu verras qu'après la ligne :

VB:
AeroportDep.Value = UCase(AeroportDep.Value)
la lecture du code relance l'événement Change et donc l'exécute deux fois.

Pour remédier à ce problème je te propose la solution suivante :
1. En haut du module de ton Userform (en première ligne) déclare une variable boléenne TEST :

Code:
Private TEST As Boolean
2. Remplace ton code par celui-ci :
Code:
Private Sub AeroportDep_Change()
Dim derligne, i, j, C, pays, code

If TEST = True Then Exit Sub
If Len(AeroportDep.Value) = 3 Then
    TEST = True
    Workbooks.Open Filename:="D:\Documents\Temp_Cotation\CHRONO COTATION 2019 PNR Temp.xlsm"
    Workbooks("CHRONO COTATION 2019 PNR Temp.xlsm").Activate
    code = AeroportDep.Value
    Sheets("Code").Select
    'Range("A2").Select
    'Range(Selection, Selection.End(xlDown)).Select
    Set C = Columns("A:A").Find(What:=code, After:=ActiveCell, LookIn:=xlFormulas _
    , LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)
    If C Is Nothing Then
        MsgBox "Code Aéroport Inconnu"
        Workbooks("CHRONO COTATION 2019 PNR Temp.xlsm").Close
        Exit Sub
    Else
        C.Select
        pays = ActiveCell.Offset(0, 1).Value
        PaysDep.Value = pays
    End If
    Set C = Nothing
    Workbooks("CHRONO COTATION 2019 PNR Temp.xlsm").Close
End If
If TEST = True Then AeroportDep.Value = UCase(AeroportDep.Value)
End Sub

Ce système permet d'empêcher le redoublement de l'événement Change. Il a comme inconvénient de ne faire apparaître les majuscules qu'au troisième caractère...
 
Bonjour Robert
Merci cela marche parfaitemement !! 😉
 
- 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

  • Question Question
Microsoft 365 modifier un code
Réponses
1
Affichages
464
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…