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. Merci infiniment. Ca marche parfaitement. De plus j'ai bien compris la macro.

    Bonne journée
    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. Bonjour,

        J'ai l'erreur suivante:
        0
        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. 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 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. 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