Tester une erreur vba et renvoyer msgbox

matthieu2701

XLDnaute Occasionnel
Bonjour,

J'ai une cellule ou je rentre le nom et le prénom du client. Afin d'harmoniser tous les dossiers,sur une deuxième feuille, j'ai fais une formule qui permet de mettre le NOM en majuscule et le Prénom avec la première lettre en majuscule et le reste en minuscule.

Voici ma macro qui me permet de créer le dossier client en fonction des éléments renseignés.
Code:
Sub Dossier() 
    
'NNI des agents 
'Marignane 
Matthieu = "b90570" 
Yacine = "J03455" 
Sophie = "d41254" 
Maxence = "J33056" 
Remi = "f02756" 
Camille = "c60772" 
Cindy = "cm0d924n" 
Sarah = "ss0c0can" 
Priscilla = "d91472" 
Zoe = "F90572" 
Elodie = "d04673" 
Virginie = "VR023B1N" 
Daniel = "h86540" 
Nathalie = "b22929" 
Alexandre = "i62338" 
Stephane = "a06745" 
Florent = "C65470" 

'Nimes 
Fabienne = "f74844" 
Claudia = "J88653" 
Magali = "J37249" 

'Dans ma feuille Echéancier 
With Sheets("Echéancier") 
    Nom = .Range("B2") 
    PCE = .Range("G6") 
End With 

'Si Nom et PCE ne sont pas remplis alors msgbox 
If Nom = "" Or PCE = "" Then 
MsgBox "Veuillez compléter les champs Nom/Prénom et PCE pour pouvoir générer le dossier du client.", vbOKOnly + vbCritical, "Attention" 
Exit Sub 
End If 


'Recherche de l'utilisateur qui a ouvert la session 
utilisateur = Environ("username") 
Select Case utilisateur 

Case Matthieu, Yacine, Sophie, Maxence, Remi, Camille, Cindy, Sarah, Priscilla, Zoe, Elodie, Virginie, Daniel, Nathalie, Alexandre, Stephane, Florent 
    chemin = "Q:\AAGP2\PDD GAZ\PDD\Dossiers PDD\En cours\" & Feuil3.Cells(2, 2).Text & " " & Feuil3.Cells(6, 7).Text 

Case Fabienne, Claudia, Magali 
   chemin = "Q:\AAG\DOSSIERS NUMERIQUES PDD\" & Feuil3.Cells(2, 2).Text & " " & Feuil3.Cells(6, 7).Text 

End Select 

'Si erreur, aller à la fin 
On Error GoTo fin 

'Création du dossier 
MkDir chemin 

'Faire apparaite bulle 
ActiveSheet.Shapes("MonBouton1").Visible = True 
Application.OnTime Now + TimeValue("00:00:02"), "EffacerMessage1" 
Exit Sub 

'Renvoi si erreur 
fin: 
MsgBox "Le dossier numérique " & Nom & " " & PCE & " a déjà été créé. Impossible de le créer une seconde fois.", vbCritical, "Attention" 

End Sub 
'Effacement de la bulle 
Sub EffacerMessage1() 
ActiveSheet.Shapes("MonBouton1").Visible = False 
End Sub

Je souhaiterais, que si seulement le NOM est renseigné avoir un msgbox indiquant que le prénom est obligatoire. Actuellement, cela m'ouvre la fenêtre de débogage .

Merci par avance de votre aide.
 
Dernière édition:

Jack2

XLDnaute Occasionnel
Re : Tester une erreur vba et renvoyer msgbox

Bonjour,

Je ne suis pas certain de répondre à ta question, dans ta procédure "dossier" il n'y a que des prénoms. Si dans la feuille Echéancier la cellule B2 doit renvoyer le nom et le prénom dans la variable Nom, tu peux procéder de la manière suivante :

On suppose que le nom et le prénom sont séparés par un espace comme Dupont Jean, on teste s'il existe un espace dans la variable :
Code:
Nom = "Dupont Jean"
If InStr(Nom, " ") = 0 Then
    MsgBox "Il manque le prénom"
    'Gérer l'absence de prénom
Else
    NomSansPrénom = Mid(Nom, 1, InStr(Nom, " ") - 1)
    Prénom = Mid(Nom, InStr(Nom, " ") + 1, Len(Nom))
End If

Ci-après une fonction qui teste l'existence d'un répertoire :
Code:
Function PathExist(Path As String) As Boolean
    PathExist = Dir(Path, vbDirectory) <> ""
End Function
Elle te permet d'éviter une erreur et remplace "On Error GoTo fin" :

Au lieu de
'Création du dossier
MkDir chemin

Code:
If Not PathExist (Chemin) Then
MkDir chemin
Else
	MsgBox "Le dossier numérique " & Nom & " " & PCE & " a déjà été créé. Impossible de le créer une seconde fois.", vbCritical, "Attention"
	Exit Sub 'ou autre chose
End if

Bonne journée,

A+


PS Pour pouvoir appeler la fonction PathExist , la variable chemin doit être déclarée en début de procédure :
Sub Dossier

Dim chemin as String
 
Dernière édition:

Statistiques des forums

Discussions
312 103
Messages
2 085 317
Membres
102 862
dernier inscrit
Emma35400