Formule IF dans VBA avec MsgBox

Résolu
Chairman_1512 -  
 Chairman_1512 -
J'ai besoin d'intégrer cette formule dans mon code VBA de sorte que les résultats ("Numéro "&J8&" valide","Numéro "&J8&" non valide"&CHAR(10)&"Veuillez saisir un numéro "&J8& " valide")) soient afficher dans un MsgBox

=IF(J9="","",IF(COUNTIF(OFFSET(Paramètres!F3,,MATCH(J8,Paramètres!G2:I2,0),25,),LEFT(J9,5)*1),"Numéro "&J8&" valide","Numéro "&J8&" non valide"&CHAR(10)&"Veuillez saisir un numéro "&J8& " valide"))

A SAVOIR

- La cellule (J8) contient le nom du réseau
- La cellule (J9), le numéro de téléhone en fonction du réseau sélection en J8.

Si le numéro saisi en J9 ne correspond pas au réseau en J8, afficher un message box "Numéro incoorect. Veuillez saisir un numéro [NOM RESEAU]. S'il correspond, passer à l'étape suivante

Le fichier: https://www.cjoint.com/c/KAAl7zcQIo4

7 réponses

  1. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour,

    Exemple de code à adapter et à compléter
    Sub Test_Numero()
        Dim f1 As Worksheet, f2 As Worksheet
        Dim Reseau As String
        Dim Tel As Long
        
        Application.ScreenUpdating = False
        Set f1 = Sheets("Transfert_Argent")
        Set f2 = Sheets("Paramètres")
        Reseau = f1.Range("J8").Value
        Tel = Left(f1.Range("J9"), 5) * 1
        Select Case Reseau
            Case Is = "Orange"
                col = 7
            Case Is = "MTN"
                col = 8
            Case Is = "Moov"
                col = 9
        End Select
        
        Set t = f2.Columns(col).Find(Tel, lookat:=xlWhole)
        If Not t Is Nothing Then
            'METTRE ICI, la suite de votre code si le numéro est correct
        Else
            MsgBox "Numéro incorrect. Veuillez saisir un numéro " & Reseau
        End If
        
        Set t = Nothing
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub


    Cdlt
    0
  2. Chairman_1512
     
    Bonjour Frenchie,

    Merci d'avoir réagi positivement à ma requête. Cela dit, j'ai djà une Sub(Bouton enrégistrer) pour enrégistrer les infos saisies donc le code est ci-dessous:

    Sub Transact_Enregistrer()
    With Sheet4
    If .Range("J4").Value = Empty Then
    MsgBox "Veuillez saisir la date", , vbCritical + vbOKOnly, "Erreur DATE!"
    Range("J4").Select
    Exit Sub
    End If
    With Sheet4
    If .Range("J5").Value = Empty Then
    MsgBox "Veuillez saisir l'heure", , vbCritical + vbOKOnly, "Erreur HEURE!"
    Range("J5").Select
    Exit Sub
    End If
    With Sheet4
    If .Range("J6").Value = Empty Then
    MsgBox "Veuillez sélectionner type transaction", vbCritical + vbOKOnly, "Erreur TYPE TRANSACTION!"
    Range("J6").Select
    Exit Sub
    End If
    With Sheet4
    If .Range("J7").Value = Empty Then
    MsgBox "Veuillez sélectionner type bénéficiaire", vbCritical + vbOKOnly, "Erreur TYPE BENEFICIAIRE!"
    Range("J7").Select
    Exit Sub
    End If
    With Sheet4
    If .Range("J8").Value = Empty Then
    MsgBox "Veuillez sélectionner type réseau", vbCritical + vbOKOnly, "Erreur TYPE RESEAU!"
    Range("J8").Select
    Exit Sub
    End If
    With Sheet4
    If .Range("J9").Value = Empty Then
    MsgBox "Veuillez saisir le numéro de téléphone avec l'indicatif 225", vbCritical + vbOKOnly, "Erreur INDICATIF!"
    Range("J9").Select
    Exit Sub
    End If

    With Sheet4
    If .Range("J10").Value = Empty Then
    MsgBox "Veuillez le montant de la transaction", vbCritical + vbOKOnly, "Erreur MONTANT TRANSACTION!"
    Range("J10").Select
    Exit Sub
    End If
    With Sheet4
    If .Range("M5").Value = Empty Then
    MsgBox "Veuillez saisir la référence de la transaction", vbCritical + vbOKOnly, "Erreur REF. TRANSACTION!"
    Range("M5").Select
    Exit Sub
    End If
    With Sheet4
    If .Range("M6").Value = Empty Then
    MsgBox "Veuillez saisir l'ID de la transaction", vbCritical + vbOKOnly, "Erreur ID TRANSACTION!"
    Range("M6").Select
    Exit Sub
    End If
    With Sheet4
    If .Range("M7").Value = Empty Then
    MsgBox "Veuillez saisir le numéro de reçu", vbCritical + vbOKOnly, "Erreur NUMERO RECU!"
    Range("M7").Select
    Exit Sub
    End If
    TransactRow = .Range("D1048567").End(xlUp).Row + 1 'First available Row
    For TransactCol = 4 To 17
    .Cells(TransactRow, TransactCol).Value = .Range(.Cells(14, TransactCol).Value).Value
    Next TransactCol
    .Shapes("TransactExist").Visible = msoCTrue
    .Shapes("TransactNouv").Visible = msoFalse
    .Range("E11").Value = False
    End With
    End With
    End With
    End With
    End With
    End With
    End With
    End With
    End With
    End With
    End With

    End Sub

    Comment je pourrai intégrer ton code ici?

    Cordialement
    0
    1. Frenchie83 Messages postés 2254 Statut Membre 339
       
      A l'emplacement laissé (en remarque dans mon code), il suffit d'y coller le nom de la macro "Transact_Enregistrer" comme ci-dessous


         Sub Test_Numero()
          Dim f1 As Worksheet, f2 As Worksheet
          Dim Reseau As String
          Dim Tel As Long
          
          Application.ScreenUpdating = False
          Set f1 = Sheets("Transfert_Argent")
          Set f2 = Sheets("Paramètres")
          Reseau = f1.Range("J8").Value
          Tel = Left(f1.Range("J9"), 5) * 1
          Select Case Reseau
              Case Is = "Orange"
                  col = 7
              Case Is = "MTN"
                  col = 8
              Case Is = "Moov"
                  col = 9
          End Select
          
          Set t = f2.Columns(col).Find(Tel, lookat:=xlWhole)
          If Not t Is Nothing Then
              Transact_Enregistrer
          Else
              MsgBox "Numéro incorrect. Veuillez saisir un numéro " & Reseau
          End If
          
          Set t = Nothing
          Set f1 = Nothing
          Set f2 = Nothing
      End Sub


      Cdlt
      0
  3. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour,

    Votre Macro "Transact_Enregistrer" est incluse dans le code que j'ai fourni à cet emplacement:
        If Not t Is Nothing Then
            Transact_Enregistrer
        Else
    


    Il vous suffit simplement d'affecter la macro "Test_Numero" à votre bouton "Enregistrer". C'est tout.

    Cdlt
    0
  4. Chairman_1512
     
    Bonjour,

    J'ai l'erreur suivante:
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Pour le message d'erreur, c'est qu'il manque la déclaration de la variable "Col".

    Pour le reste, voici:
    https://mon-partage.fr/f/aevjLGE0/

    Le fichier étant assez volumineux, je l'ai enregistré avec l'extension "Xlxb", ce qui diminue fortement le nombre de kiloOctets, mais le fonctionnement reste le même.

    Cdlt
    0
  7. Chairman_1512
     
    Merci infiniment. Ca marche parfaitement. De plus j'ai bien compris la macro.

    Bonne journée
    0
  8. Chairman_1512
     
    J'avoue ne pas pas vraiment suivre. Vu que mon code est là, pourrais-tu l'insérer dans le tien en même temps comme tu le dis stp?
    -1