Formule IF dans VBA avec MsgBox

Résolu
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. 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
    1. 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. 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
    2. 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
      1. 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
        1. Bonjour,

          J'ai l'erreur suivante:
          0
          1. 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
            1. Merci infiniment. Ca marche parfaitement. De plus j'ai bien compris la macro.

              Bonne journée
              0