IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Exécution de condition [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Téléconseiller
    Inscrit en
    Novembre 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Téléconseiller
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2007
    Messages : 134
    Par défaut Exécution de condition
    Bonsoir à tous

    Je n’arrive pas exécuter la condition VBA suivante: Vérifier que l’utilisateur a saisi au moins un numéro de téléphone: portable ou fixe avec un message lui invitant à renseigner au moins champ et ensuite vérifier si les données saisies sont numériques et le nombre de caractères supérieur est ou égal à 10. Pour valider les données, au moins un des champs doit être renseigné

    Or, le code code ci-après ne me valide les données que lorsque les 2 champs sont renseignés

    Dans cette attente

    Cordialement

    Ci-après le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    If Trim(.Txt_Fixe_Membre.Value) = "" And Trim(.Txt_Portable_Membre.Value) = "" Then
     
    MsgBox “Veuillez saisir au moins un numéro de téléphone.”, vbOKOnly + vbInformation, “Téléphone”
    .Txt_Fixe_Membre.BackColor = vbRed
    .Txt_Portable_Membre.BackColor = vbRed
    .Txt_Fixe_Membre.SetFocus
     
    Else
    If Len(.Txt_Fixe_Membre.Value) < 10 And Not IsNumeric(.Txt_Fixe_Membre.Value) Then
     
    MsgBox "Format du numéro de téléphone non valide.", vbOKOnly + vbInformation, "Téléphone Fixe"
     
    ElseIf Len(.Txt_Portable_Membre.Value) < 10 And Not IsNumeric(.Txt_Portable_Membre.Value) Then
     
    MsgBox "Format du numéro de téléphone non valide.", vbOKOnly + vbInformation, "Téléphone Portbale"
     
     
    End If
    End If

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour
    je ne suis pas certain d'avoir compris la demande... mais si tu cherche à obliger le saisie que des numéros dans un textbox je propose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0
    End Sub
     
    Private Sub CommandButton1_Click()
    If Len(TextBox1.Value) <> 8 Then
    MsgBox ("Merci de saisir un num de téléphone valable de 8 chifres")
    TextBox1.Value = ""
    Exit Sub
    Else
    Cells(1, 1) = TextBox1.Value
    End If
    End Sub
    exemple à tester:
    Fichiers attachés Fichiers attachés

  3. #3
    Membre confirmé
    Homme Profil pro
    Téléconseiller
    Inscrit en
    Novembre 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Téléconseiller
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2007
    Messages : 134
    Par défaut
    En fait, j'ai un formulaire de saisie de données avec 2 TextBox :
    Un pour renseigner un téléphone fixe et un autre pour un portable avec un bouton "valider

    La condition que je veux est qu'au moins un numéro de téléphone soit renseigné, au meilleur les deux. entre temps vérifier si le numéro saisi est numérique et avec au moins 10 chiffres.
    Lorsque les deux Textbox sont renseignés, les données sont validées.
    Mais si j'ai un seul de renseigné, les données ne sont pas validées et c'est là ou j'ai besoin de vos lumières

    Code du bouton Valider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    Private Sub Cmd_Valider_Click()
     
        Dim i As VbMsgBoxResult
     
        i = MsgBox("Voulez-vous enregistrer les données?", vbYesNo + vbQuestion, "Enregistrement des Données")
     
        If i = vbNo Then 
             Exit Sub
     
       End if 
     
     
        If Trim(Me.Txt_Fixe_Membre.Value) = "" And Trim(Me.Txt_Portable_Membre.Value) = "" Then
     
           MsgBox "Veuillez saisir au moins  un numéro de téléphone"
           Me.Txt_Fixe_Membre.BackColor = vbRed
           Me.Txt_Portable_Membre.BackColor = vbRed
     
            Exit Sub
        End If
     
        If Len(Me.Txt_Fixe_Membre.Value) < 10 Or Len(Me.Txt_Portable_Membre.Value) < 10 Then
     
                MsgBox "Veuillez saisir un numéro de téléphone Valide", vbYesNo + vbInformation, "Téléphone"
     
     
                    Me.Txt_Fixe_Membre.BackColor = vbRed
                    Me.Txt_Portable_Membre.Value = ""
     
                    Me.Txt_Portable_Membre.BackColor = vbRed
                    Me.Txt_Fixe_Membre.Value = ""
     
          Exit Sub
     
        End If
     
        If Not IsNumeric(Me.Txt_Fixe_Membre.Value) Or Not IsNumeric(Me.Txt_Portable_Membre.Value) Then
     
                MsgBox "Veuillez saisir au moins  une numéro de téléphone au format numérique", vbYesNo + vbInformation, "Téléphone"
     
                Me.Txt_Fixe_Membre.BackColor = vbRed
                Me.Txt_Portable_Membre.BackColor = vbRed
     
                Me.Txt_Fixe_Membre.Value = ""
                Me.Txt_Portable_Membre.Value = ""
     
                Me.Txt_Fixe_Membre.BackColor = vbGreen
                Me.Txt_Portable_Membre.BackColor = vbGreen
     
                Exit Sub
     
        End If
     
            Call Validation
            Me.Txt_Fixe_Membre.Value = ""
            Me.Txt_Portable_Membre.Value = ""
    End Sub
    et ici le code d'enregistrement des données

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
     
    Sub Validation()
     
        Dim NumLigne As Long
     
        If Frm_Saisie_Telephone.Txt_Numero_Ligne.Value = "" Then
     
            NumLigne = Feuille_Membres.Range("B" & Rows.Count).End(xlUp).Row + 1
        Else
     
            NumLigne = Frm_Saisie_Telephone.Txt_Numero_Ligne.Value
     
        End If
     
        With Feuille_Membres.Range("B" & NumLigne)
     
            .Offset(0, 0).Value = "=Row() - 1"
     
     
            .Offset(0, 1).Value = Frm_Saisie_Telephone.Txt_Fixe_Membre.Value
            .Offset(0, 2).Value = Frm_Saisie_Telephone.Txt_Portable_Membre.Value
     
        End With
     
         Application.ScreenUpdating = True
     
        MsgBox "Les Données sont enregistrées avec succès!"
     
    End Sub
    Dans l'attente de votre retour
    Cordialement
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour
    j'ai juste intégré ma proposition 1 qui n'accepte que le saisie des chiffres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Txt_Fixe_Membre_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0
    End Sub
    Private Sub Txt_Portable_Membre_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("1234567890", Chr(KeyAscii)) = 0 Then KeyAscii = 0
    End Sub
    j'ai changé "OR" par "AND"

    à tester
    Fichiers attachés Fichiers attachés

  5. #5
    Membre confirmé
    Homme Profil pro
    Téléconseiller
    Inscrit en
    Novembre 2007
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Téléconseiller
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2007
    Messages : 134
    Par défaut
    Bonsoir BENNASR,

    Justement en remplaçant "OR" par "AND"
    tout fonctionne correctement comme je ne souhaite
    Merci pour cette réactivité

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT 1.0] Ordre d'exécution des conditions et vitesse de traitement
    Par vogur dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 28/12/2013, 00h21
  2. [XL-2007] Macro répétitive exécutée sous condition
    Par Nonno 94 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 18/11/2013, 11h01
  3. [2005] Temps exécution avec condition sur un CAST
    Par afrodje dans le forum Développement
    Réponses: 6
    Dernier message: 14/03/2013, 10h27
  4. Exécution sous condition: setTimeOut/clearTimeOut
    Par mathieu.smartin dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/11/2011, 14h25
  5. Exécution et condition
    Par GLDavid dans le forum PL/SQL
    Réponses: 2
    Dernier message: 13/10/2010, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo