VBA - Faire apparaître un message d'erreur
Fermé
mateo91
Messages postés
13
Date d'inscription
lundi 1 novembre 2010
Statut
Membre
Dernière intervention
3 juillet 2018
-
Modifié le 3 juil. 2018 à 12:27
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 3 juil. 2018 à 18:53
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 3 juil. 2018 à 18:53
A voir également:
- VBA - Faire apparaître un message d'erreur
- Message - Guide
- Erreur 0x80070643 - Accueil - Windows
- Comment recuperer un message supprimé sur whatsapp - Guide
- Apparaitre hors ligne instagram - Guide
- Message d'absence thunderbird - Guide
2 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
3 juil. 2018 à 14:09
3 juil. 2018 à 14:09
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
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
3 juil. 2018 à 18:53
3 juil. 2018 à 18:53
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
3 juil. 2018 à 16:08
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