VBA - Faire apparaître un message d'erreur
mateo91
Messages postés
13
Statut
Membre
-
ThauTheme Messages postés 1564 Statut Membre -
ThauTheme Messages postés 1564 Statut Membre -
Bonjour,
Je suis en train de créer une macro pour préparer une fichier d'import comptable. J'utilise différentes formules que j'étends dans les colonnes, notamment pour récupérer des informations concernant les dates ou les comptes. Il arrive que la formule donne une réponse #Valeur!.
Dans ma macro je souhaiterai ajouter un contrôle disant qu'il y a une problème dans la colonne des dates, afin que la date soit corrigée avant de continuer la macro.
J'ai essayé un :
EDIT : Ajout des balises de code
Mais ça ne semble pas fonctionner. Je dois me tromper dans le code.
Merci de votre aide.
Ps : je suis novice :)
Je suis en train de créer une macro pour préparer une fichier d'import comptable. J'utilise différentes formules que j'étends dans les colonnes, notamment pour récupérer des informations concernant les dates ou les comptes. Il arrive que la formule donne une réponse #Valeur!.
Dans ma macro je souhaiterai ajouter un contrôle disant qu'il y a une problème dans la colonne des dates, afin que la date soit corrigée avant de continuer la macro.
J'ai essayé un :
If Is Error ("F:F") then
MsgBox "Problème de date"
Else
EndIf
EDIT : Ajout des balises de code
Mais ça ne semble pas fonctionner. Je dois me tromper dans le code.
Merci de votre aide.
Ps : je suis novice :)
A voir également:
- VBA - Faire apparaître un message d'erreur
- Comment recuperer un message supprimé sur whatsapp - Guide
- Epingler un message whatsapp - Accueil - Messagerie instantanée
- Apparaitre hors ligne instagram - Guide
- Message absence thunderbird - Guide
- Message supprimé whatsapp - Guide
2 réponses
Bonjour Mateo, bonjour le forum,
Peut-être comme ça :
Peut-être comme ça :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim C As Range 'déclare la variable C (Cellule)
Dim I As Integer 'déclare la variable I (Incrément)
Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "F").End(xlUp).Row 'définit la derniere ligne éditée DL de la colonne F de l'onglet O
O.Range(O.Cells(2, "F"), O.Cells(DL, "F")).Interior.ColorIndex = xlNone 'supprime les éventuelles couleurs de remplissage dans la colonne F
For I = 2 To DL 'boucle sur toutes les lignes I de 2 à DL
If IsDate(O.Cells(I, "F")) = False Then 'condition : si la cellule ligne I colonne F n'est pas une date
MsgBox "Problème de date en F" & I & " ! la cellule sera remplie de rouge." 'message
O.Cells(I, "F").Interior.ColorIndex = 3 'remplis la cellule de rouge
End If 'fin de la condition
Next I 'prochaine ligne de la boucle
End Sub
Re,
Le code adapté :
Le code adapté :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim D As Variant 'déclare la variable D (Date)
Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "F").End(xlUp).Row 'définit la derniere ligne éditée DL de la colonne F de l'onglet O
For I = 2 To DL 'boucle sur toutes les lignes I de 2 à DL
With O.Cells(I, "F") 'prend en compte la cellule ligne I colonne "F"
If IsDate(.Value) = False Then 'condition : si la cellule ligne I colonne F n'est pas une date
.Select 'sélectionne la cellule
début: 'étiquette
.Interior.ColorIndex = 3 'remplis la cellule de rouge
'ouvre une boîte d'entrée demandant de taper la date
D = Application.InputBox("Problème de date ! Veuillez entrer une date valide.", "ATTENTION", "jj/mm/aaaa", Type:=2)
.Interior.ColorIndex = xlNone 'supprime la couleur rouge
If D = False Then GoTo suite 'si bouton "Annuler", va à l'etiquette "suite"
If IsDate(D) = False Then GoTo début 'si date invalide, va a l'étiquette "début"
.Value = DateSerial(Year(D), Month(D), Day(D)) 'renvoie la date dans la cellule
.NumberFormat = "dd/mm/yyyy" 'définit le format de date dans la cellule
End If 'fin de la condition
End With 'fin de la prise en compte de la cellule ligne I colonne "F"
suite: 'étiquette
Next I 'prochaine ligne de la boucle
End Sub
Effectivement ça fonctionne bien. Est-ce qu'on aurait un moyen pour que l'utilisateur puisse modifier la date et lancer la suite de la macro ?
Car là quand le message d'erreur apparaît on a pas d'autre choix que cliquer sur OK et modifier la date qu'à la fin de la macro.
Merci