Macro alerte nombre dépassé

Bonjour,

J'ai un tableau, où j'ai différents chiffres que je peux changer constamment. J'ai une colonne "total" qui me calcule le totale de chaque ligne du tableau. J'ai une mise en forme conditionnelle lorsque le total est >1.

J'essaie de faire une macro avec MsgBox du type "Abandonner" (annule la modification de la cellule), "Recommencer" (propose de mettre un nouveau chiffre) et "Ignorer" (Prend en compte la modification). J'aimerai associer cette macro au fait que ma cellule est >1 (une sorte de doublon avec ma mise en forme conditionnelle). Donc j'ai essayé de faire cette macro, mais je m'y connais pas du tout, donc j'ai "lancé" quelques trucs dans le code.

Et j'aimerai au final, faire une dernière macro, qui juste avant de fermer, me signale, qu'il y a encore une cellule jaune, c'est-à-dire, que j'ai encore des lignes avec une somme >1. C'est dans le cas, où j'ai manipulé plein de ligne en cliquant régulièrement sur "Ignorer".

Je vous remercie d'avance et je suis disponible rapidement lorsque vous avez des questions.

19test1.xlsm (12.54 Ko)

Bonjour

Sans le fichier, il sera difficile de t'aider !

Bye!

Bonjour,

Oubli de ma part désolé. J'ai édité le 1er message.

Un essai à tester. Te convient-il ?

48test-v1.xlsm (23.97 Ko)

Cela me convient merci mais j'aimerai comprendre quelques trucs :

Dans le code Feuille 1 :

- Dans le code de la feuille tout en bas on a :

Sub Evenemetn()
    Application.EnableEvents = True
End Sub

Cela correspond à quoi, car je ne le vois pas ailleurs

- Pour les 3 cas (Abandonner, Réessayer, ...), on a presque le même code :

Application.Undo
                    GoTo Fin

Alors que les 3 fins sont différentes, donc comment est-ce qu'Excel fait la différence ?

- A quoi correspondent :

Application.EnableEvents = False

et

Application.EnableEvents = True

Dans le code Workbook :

- A quoi correspondent "Chr(13)", et ", 20)"

Merci d'avance pour tes réponses, qui me permettront de comprendre tout le code

Explications demandées :

Sub Evenemetn()
    Application.EnableEvents = True
End Sub

Cette macro ne sert plus à rien et tu peux la supprimer. Elle m’a servi lorsque j’ai testé la macro Worksheet_Change(…)

Tu as dû voir que celle-ci commence par l’instruction :

Application.EnableEvents = False

ce qui a pour effet de désactiver le lancement d’une autre macro événementielle indésirable et inattendue au cours de l’exécution de celle en cours.

Juste avant la fin de cette macro, il ne faut pas oublier de les réactiver avec :

Application.EnableEvents = true

Or, quand on met au point une macro il est fréquent qu’elle s’arrête avant la fin : bug, point d’arrêt pour voir la valeur prise par une variable…

Et donc, si l’instruction '' Application.EnableEvents = true'' n’a pas été lue, impossible de lancer la macro quand on valide une cellule. Il n’y a plus qu’à fermer Excel et le réouvrir … ou de lancer ce bout de macro en cliquant entre son Sub en End et en actionnant F8 plusieurs fois !

Pour les 3 cas (Abandonner, Réessayer, ...), on a presque le même code :

Presque en effet mais pas tout à fait :

Case vbAbort
                    Application.Undo
                    GoTo Fin

Avant d’aller à fin, la macro annule la dernière instruction exécutée sur la feuille, ce qui a pour effet de retourner le curseur sur la cellule qui était active avant la validation et de remettre dans cette cellule sa valeur initiale.

                Case vbRetry
                    MsgBox "Saisissez une nouvelle valeur"
                    Application.Undo
                    GoTo Fin

Là, c’est pareil mais comme on a cliqué sur le bouton ‘’Recommencer’’, on invite l’utilisateur à le faire.

                Case vbIgnore
                    GoTo Fin

Dans ce dernier cas, on ne fait rien c’est-à-dire qu’on laisse la macro suivre son cours et valider la nouvelle valeur.

Dans les 3 cas, on va à fin car les instructions trouvées à cette adresse sont valables pour les 3

- A quoi correspondent "Chr(13)", et ", 20)"

Chr(13)" est utilisé dans le texte d’un message d’un Msgbox pour aller à la ligne.

Quant au 20 il est l’équivalent de ‘’vbYesNo’’ (qui vaut 4) + ’’vbCritical’’ (qui vaut 16)

OK ?

Bye !

Bonjour gmb,

Un très grand merci à toi pour toutes ces explications limpides !!

J'ai une dernière question :

SI jamais ma case totale n'est plus en H (ajout ou suppression d'une colonne), je dois remodifier la macro. Afin d'éviter de remodifier la macro, il n'y a pas moyen de "créer un nom" (dans le gestionnaire) par rapport à cette colonne, et de l'utiliser dans la macro ?

EDIT : J'ai pas fini en fait ...

Le code est fait pour le cas où je n'ai qu'une seule feuille. S jamais j'en ai plusieurs, est-ce que je dois rajouter cela dans le code du workbook :

ActiveWorkbook.Worksheets("Feuil1").Select

J'ai remarqué aussi à la fin que quand je clique pour fermer alors que j'ai une valeurs >1, que je clique sur oui, ou sur non, cela ne change rien. Si jamais j'ai sauvegarder avant, le fichier se ferme lorsque je clique sur non.

Merci

Bonjour

Tu écris :

Afin d'éviter de remodifier la macro, il n'y a pas moyen de "créer un nom" (dans le gestionnaire) par rapport à cette colonne, et de l'utiliser dans la macro ?

Ce ne serait pas suffisant.

Mais il y a moyen : voir la nouvelle version.

Tu peux y ajouter autant de colonnes que tu veux mais

  • il ne faut pas oublier de leur donner un titre
  • la cellule du bord supérieur gauche du tableau ne doit pas changer de place (B2)

Bye !

16test-v2.xlsm (25.25 Ko)

Ok, cela fonctionne bien si on insère une colonne, mais quand je mets un titre à une colonne à droite de "Total", ça me fait comme si j'avais un nombre >1 (car en réalité j'ai d'autres colonnes à droite mais elles ne rentrent pas dans le calcul).

Et si j'ai compris, cela remet totalement en question le "derCol". Et c'est vraiment pas possible d'utiliser le nom des colonnes ? Sinon tampis ... Et pour la fin, il y a toujours le truc bizarre au moment de quitter où ça me propose quand même de quitter même si j'ai cliqué sur non.

Comment faire ?

Merci.

Essaie cette nouvelle version :

31test-v3.xlsm (25.16 Ko)

Cela a l'air de très bien fonctionner, merci beaucoup !!

- Rows("2:2") fait référence à la ligne 2 c'est bien cela ?

- SI j'ai plusieurs feuille sur mon fichier, je dois mettre cela dans le code non ?

With Sheets("Feuil1")
- Rows("2:2") fait référence à la ligne 2 c'est bien cela ?

C'est bien cela !

- SI j'ai plusieurs feuille sur mon fichier, je dois mettre cela dans le code non ?

With Sheets("Feuil1")

Pas du tout.

Cette instruction indique seulement que dans la suite du code et jusqu'à l'instruction :

End With

on remplace Sheets("Feuil1") par un simple point.

Si tu veux que cette macro fonctionne pour d'autres feuilles, il te faut la copier et la coller dans la feuille VBA attachée à ces feuilles.

Bye !

J'avais de grandes chances de me tromper ^^

Mais je t'ai demandé cela par rapport au code mis dans le workbook, qui lui ne fait pas référence à la feuille 1. C'est pour cela que je te demande car j'ai peur que ça ne marche pas quand je vais le transposer à mon fichier réel avec plusieurs onglets.

car j'ai peur que ça ne marche pas quand je vais le transposer à mon fichier réel avec plusieurs onglets.

Si tu n'y arrives pas, joints ton dossier à plusieurs onglet et je te le ferai.

Bye !

C'est pas spécialement un question de ne pas y arriver, mais plus de ne pas savoir comment faire

Genre là, si je veux fermer depuis l'onglet 1, ça bug.

Après mon mon vrai fichier, j'aurai juste à changer le nom de l'onglet concerné donc je veux bien que tu me le fasse s'il te plait, si tu as encore un peu de temps pour moi

Genre là, si je veux fermer depuis l'onglet 1, ça bug.

Effectivement, si tu crées un nouvel onglet et que tu veux fermer le document alors que cet onglet est actif, tu as un bug.

Ce cas n’était pas prévu.

Mais alors, question : si tu es sur un autre onglet que celui de ton tableau quand tu fermes ton fichier, veux-tu toujours vérifier ce tableau et avoir les alertes ?

gmb a écrit :

Genre là, si je veux fermer depuis l'onglet 1, ça bug.

Effectivement, si tu crées un nouvel onglet et que tu veux fermer le document alors que cet onglet est actif, tu as un bug.

Ce cas n’était pas prévu.

Mais alors, question : si tu es sur un autre onglet que celui de ton tableau quand tu fermes ton fichier, veux-tu toujours vérifier ce tableau et avoir les alertes ?

Si possible oui, j'aimerai avoir les alertes même si je ferme depuis un autre onglet.

Alors voilà :

C'est tout bon, merci beaucoup pour tout cette aide !!

Bonne fin de journée !

Rechercher des sujets similaires à "macro alerte nombre depasse"