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 :

[Novice] Comparer les données de Msgbox à un tableaux [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2008
    Messages : 59
    Points : 42
    Points
    42
    Par défaut [Novice] Comparer les données de Msgbox à un tableaux
    Bonsoir Le forum,

    Je viens à vous car je voudrais comparer les valeurs obtenues dans un MsgBox par rapport à un (array ou tableau nomé : Champs ) et récuperer la ou les valeurs qui ne se trouvent pas dans le MsgBox.

    Exemple : Si le MsgBox affiche : Acomptes et Livraisons, je voudrais récuperer : Paiements
    Ou si le MsgBox affiche : Livraisons, je voudrais récuperer : Acomptes et Paiements
    et ainsi de suite...

    D'avance merci à vous de m'avoir lu.

    Fasedan


    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
      With Frm_MC_CalendrierAnnuel
       Dim NbrAcpt As Byte, NbrPmnt As Byte, NbrLivr As Byte
       Dim i As Byte, Box As Byte, NbrChamps As Byte
       Dim Valeur(3) As String, Champs As Variant
       Dim Trouve As Boolean
       Dim Message As String
     
       NbrAcpt = Trim(Right(.Lbl_TotalAcompte.Caption, 2))
       NbrPmnt = Trim(Right(.Lbl_TotalPaiement.Caption, 2))
       NbrLivr = Trim(Right(.Lbl_TotalLivraison.Caption, 2))
     
        Champs = Array("Acomptes", "Paiements", "Livraisons")
        Valeur(1) = NbrAcpt
        Valeur(2) = NbrPmnt
        Valeur(3) = NbrLivr
     
        For i = 1 To 3
        If Valeur(i) > 12 Then
          Trouve = True
          NbrChamps = NbrChamps + 1
          If Box = 0 Then Box = i
          Message = Message & Choose(i, "Acomptes", "Paiements", "Livraisons") & vbCrLf
        End If
        Next i
         If Trouve Then
            MsgBox "Vous avez atteint la limite maximale de 12 enregistrements annuel sur " & IIf(NbrChamps > 1, "les champs suivants :", "sur le champ :") & vbCrLf & vbCrLf _
            & Message, vbOKOnly + vbCritical, "Vérification"
     
         Exit Sub
         Else
     
           ' Enregistrer
         End If
      End With

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour,

    affecter d'abord le texte du message dans une variable puis tester cette variable via la fonction Instr par exemple …

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2008
    Messages : 59
    Points : 42
    Points
    42
    Par défaut Merci à Marc L
    Merci Marc L,

    Merci pour ton aide.
    Je vais chercher dans cette direction (InStr), mais c'est pas gagné d'avance.

    Fasedan

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2008
    Messages : 59
    Points : 42
    Points
    42
    Par défaut Merci pour votre soutien
    Merci Marc L,

    Pour ton conseil, et m'avoir mis sur la voie.
    C'est peut-être plus du chinois que du vba, mais cela me donne ce que je souhaitais.

    Fasedan

    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
     Application.ScreenUpdating = False
      With Frm_MC_CalendrierAnnuel
       Dim i As Byte, NbrChamps As Byte, Box As Byte
       Dim Valeur As Variant, Champs As Variant
       Dim Trouve As Boolean
       Dim Message As String
       Valeur = Array(Trim(Right(.Lbl_TotalAcompte.Caption, 2)), Trim(Right(.Lbl_TotalPaiement.Caption, 2)), Trim(Right(.Lbl_TotalLivraison.Caption, 2)))
       Champs = Array("Acomptes", "Paiements", "Livraisons")
     
     For i = 1 To UBound(Valeur)
      If Valeur(i) > 12 Then
        Trouve = True
        NbrChamps = NbrChamps + 1
        Message = Message & Champs(i) & vbCrLf
        Select Case Trim(Champs(i))
         Case Is = "Acomptes": .Btn_Acomptes.Enabled = False
         Case Is = "Paiements": .Btn_Paiements.Enabled = False
         Case Is = "Livraisons": .Btn_Livraisons.Enabled = False
        End Select
      End If
     Next i
      If Trouve Then
       For i = 1 To UBound(Valeur)
        If Valeur(i) <= 12 Then
         Select Case Trim(Champs(i))
          Case Is = "Acomptes": .Btn_Acomptes.Enabled = True
          Case Is = "Paiements": .Btn_Paiements.Enabled = True
          Case Is = "Livraisons": .Btn_Livraisons.Enabled = True
         End Select
        End If
       Next i
        MsgBox "Vous avez atteint la limite maximale de 12 enregistrements annuel sur " & IIf(NbrChamps > 1, "les champs suivants :", "sur le champ :") & vbCrLf & vbCrLf _
        & Message, vbOKOnly + vbCritical, "Vérification"
         Exit Sub
         Else
          ' Enregistrer
         End If
      End With
     Application.ScreenUpdating = True

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

Discussions similaires

  1. [XL-2007] comparer les données de deux feuilles
    Par devalender dans le forum Excel
    Réponses: 3
    Dernier message: 07/06/2011, 16h49
  2. [XL-2007] comparer les données reçues sur un mois et completer les données manquantes par une macro.
    Par wisemanvsfatboy dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/11/2010, 17h16
  3. comparer les donnes d'un controle ASP.net au base de donne
    Par princesse_sahara dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/05/2008, 01h13
  4. Comparer les données de deux tables ?
    Par bicz400 dans le forum Requêtes
    Réponses: 1
    Dernier message: 15/02/2008, 11h33
  5. Réponses: 4
    Dernier message: 26/07/2007, 10h49

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