Formule IF dans VBA avec MsgBox

Résolu/Fermé
Chairman_1512 Messages postés 11 Date d'inscription jeudi 24 décembre 2020 Statut Membre Dernière intervention 28 janvier 2021 - 26 janv. 2021 à 13:00
Chairman_1512 Messages postés 11 Date d'inscription jeudi 24 décembre 2020 Statut Membre Dernière intervention 28 janvier 2021 - 28 janv. 2021 à 12:01
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
A voir également:

7 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
27 janv. 2021 à 05:28
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
Chairman_1512 Messages postés 11 Date d'inscription jeudi 24 décembre 2020 Statut Membre Dernière intervention 28 janvier 2021
Modifié le 27 janv. 2021 à 10:29
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
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
Modifié le 27 janv. 2021 à 11:14
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
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
28 janv. 2021 à 06:20
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
Chairman_1512 Messages postés 11 Date d'inscription jeudi 24 décembre 2020 Statut Membre Dernière intervention 28 janvier 2021
28 janv. 2021 à 10:08
Bonjour,

J'ai l'erreur suivante:
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
Modifié le 28 janv. 2021 à 11:51
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
Chairman_1512 Messages postés 11 Date d'inscription jeudi 24 décembre 2020 Statut Membre Dernière intervention 28 janvier 2021
28 janv. 2021 à 12:01
Merci infiniment. Ca marche parfaitement. De plus j'ai bien compris la macro.

Bonne journée
0
Chairman_1512 Messages postés 11 Date d'inscription jeudi 24 décembre 2020 Statut Membre Dernière intervention 28 janvier 2021
27 janv. 2021 à 13:00
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