Formule IF dans VBA avec MsgBox
Résolu
Chairman_1512
-
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
=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
-
Bonjour,
Exemple de code à adapter et à compléterSub 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 -
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-
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
-
-
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 -
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 -
Merci infiniment. Ca marche parfaitement. De plus j'ai bien compris la macro.
Bonne journée -
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?
