VBA - Faire apparaître un message d'erreur
mateo91
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
ThauTheme Messages postés 1442 Date d'inscription Statut Membre Dernière intervention -
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
- Apparaitre hors ligne instagram - Guide
- Epingler un message whatsapp - Accueil - Messagerie instantanée
- Message supprimé whatsapp - Guide
- Message absence thunderbird - 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