Réaliser macro de MsgBox si MFC incorrecte Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
F
FirstnameLastname
Jeune membre
Jeune membre
Messages : 40
Inscrit le : 4 janvier 2019
Version d'Excel : 16

Message par FirstnameLastname » 7 janvier 2019, 09:15

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)
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'124
Appréciations reçues : 346
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 7 janvier 2019, 09:33

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.
exemple couleur mfc.xlsm
(16.51 Kio) Téléchargé 2 fois
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é :bien:
"100% des gagnants auront tenté leur chance" :trfl:
F
FirstnameLastname
Jeune membre
Jeune membre
Messages : 40
Inscrit le : 4 janvier 2019
Version d'Excel : 16

Message par FirstnameLastname » 7 janvier 2019, 09:52

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 :
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
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 :bof:
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'124
Appréciations reçues : 346
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 7 janvier 2019, 10:08

Bonjour,

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
Si tu peux déjà essayer ça et me dire si ça te va.
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é :bien:
"100% des gagnants auront tenté leur chance" :trfl:
F
FirstnameLastname
Jeune membre
Jeune membre
Messages : 40
Inscrit le : 4 janvier 2019
Version d'Excel : 16

Message par FirstnameLastname » 7 janvier 2019, 10:13

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 ?
Avatar du membre
Ausecour
Passionné d'Excel
Passionné d'Excel
Messages : 3'124
Appréciations reçues : 346
Inscrit le : 31 mai 2018
Version d'Excel : 2010 FR, 2013 FR

Message par Ausecour » 7 janvier 2019, 10:18

Rebonjour,

Je t'ai mis le code qui devrait fonctionner dans un spoiler, tu l'as vu? :wink:

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é :bien:
"100% des gagnants auront tenté leur chance" :trfl:
F
FirstnameLastname
Jeune membre
Jeune membre
Messages : 40
Inscrit le : 4 janvier 2019
Version d'Excel : 16

Message par FirstnameLastname » 7 janvier 2019, 10:26

Je n'avais pas vu le spoiler.

Merci beaucoup, tout le reste est clair pour moi :mrgreen:
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message