Réaliser macro de MsgBox si MFC incorrecte Le sujet est résolu
- FirstnameLastname
- Jeune membre
- Messages : 40
- Inscrit le : 4 janvier 2019
- Version d'Excel : 16
Bonjour à tous et à toutes,
Je réalise actuellement une macro permettant d'enregistrer une plage de données au format CSV.
Concernant ce morceau de code, j'ai pu trouver sur internet une macro et l'arranger pour mes données.
Cependant, j'aimerais pouvoir vérifier et afficher à l'utilisateur si toutes les cellules sont remplies correctement et le rediriger vers l'enregistrement de données et si ce n'est pas le cas où se trouvent les erreurs dans un seul message box et de quitter la macro en cours.
Dois-je réaliser une macro en fonction de la couleur de la cellule ? (Mes différentes MFC possèdent toutes la même couleur si erreur)
Je réalise actuellement une macro permettant d'enregistrer une plage de données au format CSV.
Concernant ce morceau de code, j'ai pu trouver sur internet une macro et l'arranger pour mes données.
Cependant, j'aimerais pouvoir vérifier et afficher à l'utilisateur si toutes les cellules sont remplies correctement et le rediriger vers l'enregistrement de données et si ce n'est pas le cas où se trouvent les erreurs dans un seul message box et de quitter la macro en cours.
Dois-je réaliser une macro en fonction de la couleur de la cellule ? (Mes différentes MFC possèdent toutes la même couleur si erreur)
- Ausecour
- Passionné d'Excel
- Messages : 3'124
- Appréciations reçues : 346
- Inscrit le : 31 mai 2018
- Version d'Excel : 2010 FR, 2013 FR
Bonjour,
Oui tu peux soit faire ça par mfc, soit réécrire tes conditions en code vba...
Pour la mfc je te passe ce fichier avec un code exemple qui permet de lire et afficher la couleur affichée par la cellule via une mise en forme conditionnelle. Tu peux regarder la ligne de code via le bouton VBA de l'onglet développeur.
Oui tu peux soit faire ça par mfc, soit réécrire tes conditions en code vba...
Pour la mfc je te passe ce fichier avec un code exemple qui permet de lire et afficher la couleur affichée par la cellule via une mise en forme conditionnelle. Tu peux regarder la ligne de code via le bouton VBA de l'onglet développeur.
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté 
"100% des gagnants auront tenté leur chance"

"100% des gagnants auront tenté leur chance"

- FirstnameLastname
- Jeune membre
- Messages : 40
- Inscrit le : 4 janvier 2019
- Version d'Excel : 16
Merci pour ta réponse Ausecour, j'ai cependant du mal m'exprimer.
J'ai déjà rédigé de nombreuses MFC et j'aimerais désormais pouvoir afficher une fenêtre à l'utilisateur pour qu'il sache quelles cellules sont incorrectes avant qu'il puisse enregistrer son fichier au format CSV.
Voici le code que j'ai commencé à écrire :
Je ne sais pas comment récupérer la cellule incorrecte ni comment l'ajouter aux autres cellules incorrectes pour n'afficher qu'un seul MsgBox. De plus, mon morceau de code ne fonctionne pas 
J'ai déjà rédigé de nombreuses MFC et j'aimerais désormais pouvoir afficher une fenêtre à l'utilisateur pour qu'il sache quelles cellules sont incorrectes avant qu'il puisse enregistrer son fichier au format CSV.
Voici le code que j'ai commencé à écrire :
Set plage = Range("A1:S" & Cells(Rows.Count, "S").End(xlUp).Row)
For Each c In plage
If plage.Interior.Color = RGB(255,167,167) Then
MsgBox "Attention ! Certaines cases obligatoires (NumeroCellule) ne sont pas remplies !"
Exit Sub
End If
Next c

- Ausecour
- Passionné d'Excel
- Messages : 3'124
- Appréciations reçues : 346
- Inscrit le : 31 mai 2018
- Version d'Excel : 2010 FR, 2013 FR
Bonjour,
Ah, je comprends mieux ce que tu veux faire du coup!
Ton code présente des erreurs :
Si tu peux déjà essayer ça et me dire si ça te va.
Ah, je comprends mieux ce que tu veux faire du coup!
Ton code présente des erreurs :
Set plage = Range("A1:S" & Cells(Rows.Count, "S").End(xlUp).Row)
For Each c In Range 'ici mettre plage.cells, pas Range
If Range.Interior.Color = RGB(255,167,167) Then 'comme tu utilises c, ne mets pas range.interior.color
'mais c.interior.color,idem pour .interior.color, .interior.color récupère la couleur mise manuellement
'par quelqu'un, pas la couleur donnée par une mfc, qui se prend dans .DisplayFormat.Interior.Color
MsgBox "Attention ! Certaines cases obligatoires (NumeroCellule) ne sont pas remplies !"
Exit Sub 'si tu fais ça tu t'arrêtes à la première cellule vide, tu ne pourras pas voir les autres
'et les afficher
End If
Next c
Correction de ton code :Afficher
Sub test()
dim c as Range
message = ""
Set plage = Range("A1:S" & Cells(Rows.Count, "S").End(xlUp).Row)
For Each c In plage.cells
If c.DisplayFormat.Interior.Color = RGB(255,167,167) Then
if message <> "" then
message = message & chr(10) & c.address
else
message = c.address
end if
End If
Next c
if message <> "" then
MsgBox "Attention ! Certaines cases obligatoires ne sont pas remplies !" & chr(10) & message, vbExclamation
end if
End Sub
Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté 
"100% des gagnants auront tenté leur chance"

"100% des gagnants auront tenté leur chance"

- FirstnameLastname
- Jeune membre
- Messages : 40
- Inscrit le : 4 janvier 2019
- Version d'Excel : 16
Oui c'est exactement !
Et du coup pour n'afficher qu'une seule MsgBox avec les différentes cellules ne convenant pas ?
Le 'Exit Sub' je dois donc le mettre à la fin de ma boucle ; après mon Next c ?
Et du coup pour n'afficher qu'une seule MsgBox avec les différentes cellules ne convenant pas ?
Le 'Exit Sub' je dois donc le mettre à la fin de ma boucle ; après mon Next c ?
- Ausecour
- Passionné d'Excel
- Messages : 3'124
- Appréciations reçues : 346
- Inscrit le : 31 mai 2018
- Version d'Excel : 2010 FR, 2013 FR
Rebonjour,
Je t'ai mis le code qui devrait fonctionner dans un spoiler, tu l'as vu?
Il faut cliquer sur Afficher
Il ne s'agit seulement d'enlever le exit sub, il faut modifier plusieurs choses dans ton programme pour qu'il fonctionne, je te laisse voir le nouveau code et les commentaires sur ton ancien code, tu me feras un retour si tu souhaites approfondir des explications
Je t'ai mis le code qui devrait fonctionner dans un spoiler, tu l'as vu?

Il faut cliquer sur Afficher

Il ne s'agit seulement d'enlever le exit sub, il faut modifier plusieurs choses dans ton programme pour qu'il fonctionne, je te laisse voir le nouveau code et les commentaires sur ton ancien code, tu me feras un retour si tu souhaites approfondir des explications

Plus un sujet a un titre précis, des explications claires, et un fichier Excel bien préparé, plus il a de chances d'avoir une réponse qui répond au besoin, mettez toutes les chances de votre côté 
"100% des gagnants auront tenté leur chance"

"100% des gagnants auront tenté leur chance"

- FirstnameLastname
- Jeune membre
- Messages : 40
- Inscrit le : 4 janvier 2019
- Version d'Excel : 16
Je n'avais pas vu le spoiler.
Merci beaucoup, tout le reste est clair pour moi
Merci beaucoup, tout le reste est clair pour moi

-
- Sujets similaires
- Réponses
- Vues
- Dernier message
-
- 6 Réponses
- 145 Vues
-
Dernier message par VDMICHEL
7 mai 2014, 17:40
-
- 5 Réponses
- 350 Vues
-
Dernier message par Frenchy
5 mars 2015, 14:04
-
- 6 Réponses
- 187 Vues
-
Dernier message par chti59xcel
10 mai 2014, 18:06
-
- 9 Réponses
- 166 Vues
-
Dernier message par bofala
13 novembre 2019, 09:34
-
-
Macro permettant de réaliser un échantillonage
par Sarostique » 26 mai 2014, 19:36 » dans Excel - VBA - 5 Réponses
- 335 Vues
-
Dernier message par gmb
31 mai 2014, 08:33
-
-
- 1 Réponses
- 392 Vues
-
Dernier message par Psykopat
26 avril 2016, 09:54