![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
Bonjour tout le monde,
Je suis novice en ce qui concerne les macros... J'ai une colonne qui calcule des pourcentages. A partir de cette colonne j'aimerais qu'une petit boîte de dialogue s'ouvre en me disant: "vous avez dépassé les 100%" Je ne connais pas le langage VBA. Je suis sur Excel 5.0. Je vous remercie d'avance. |
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
Salut Aurélie !
Avec une macro évènementielle : Private Sub Worksheet_Change(ByVal Target As Range) If Range("A1").Value > 100 Then MsgBox "PasGlopPasGlop" End If End Sub A1 = Addition de ta colonne % @ + Moa |
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
Merci beaucoup
Je suis vraiment pas douée. J'ai mis: Private Sub Worksheet_Change(ByVal Target As Range) If Range("G21:G11512").Value > 100 Then MsgBox "Ne doit pas dépasser 100%" End If End Sub Et ca me marque qu'il y a une incompatibilité de type. Je ne comprends pas. Merci encore. |
|
|
#5 (permalink) |
|
Guest
Messages: n/a
|
J'ai peut etre oublié de dire qqch d'important.
Ma colonne de pourcentage marche en cumulé. Donc je ne dois pas les additionner. Désolé si c'était important Merci à tout le monde pour votre aide. |
|
|
#6 (permalink) |
|
Guest
Messages: n/a
|
Il existe bien une méthode de l'objet Application qui pourrait se rapprocher de ça :
Elle se nomme "Application.QuandActivationFeuille" Elle permet l'exécution d'une macro, dès que l'on active tout type de feuille dans un classeur contenant la macro. De mémoire, elle se décompose ainsi : Proc test() Application.QuandActivationFeuille = nom_de_la_macro_a_executer Fin Proc Proc nom_de_la_macro_a_executer() Si Plage("G21:G11512").Valeur> 100 Alors Message "Ne doit pas dépasser 100%" fin si Fin Proc Essaie sinon, dans Excel 5, l'aide en ligne, grâce aux nombreux exemples fournis. Bonne chance, j_Li |
|
|
#7 (permalink) |
|
Guest
Messages: n/a
|
Re-bonjour et merci pour ces réponses
Proc test () J'ai essayé application.QuandActivationFeuille = essai2 Fin proc Plus la macro essai2 Mais ca ne marche pas je ne sais pas si ca vient de moi mais j'ai fermé le classeur, je l'ai ouvert et après j'ai sais mes pourcentages et ca ne m'a rien fait meme lorsque j'ai dépassé les 100% Voila Merci encore |
|
|
#8 (permalink) |
|
Guest
Messages: n/a
|
Salut Aurélie !
Une petite question : - Est-ce la somme de ta plage qui ne doit pas dépasser 100% ou les cellules prises individuellement ? Car dans l'exemple que je t'ai donné, moi je faisais la somme de ta colonne en cellule A1, puis la macro, testait la cellule A1. Car si tu mets : If Range("G21:G11512").Value > 100, ça ne veut rien dire ! Soit tu dois préciser If Sum de tant à tant, soit tu dois faire la vérif de chaque cellule avec For Each cell In de tant à tant....If cell bla bla...! Essaie en mettant dans une cellule quelconque une formule et en testant ensuite cette cellule avec ta macro. Et si cela fonctionne, tu pourras ensuite changer ta macro en utilisant If Sum.. @ + Moa |
|
|
#9 (permalink) |
|
Guest
Messages: n/a
|
Merci Moa Alors va falloir etre patient, je suis désolée je crois ne pas avoir tout saisi (je débute) Je ne veux pas avoir la somme de ma sélection mais seulement, un test sur chaque cellule qui me dit si cette cellule dépasse les 100%. Donc si j'ai compris je dois faire un truc du genre Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In ("F8:F28") If cell ("F8:F28").value > 100 Then MsgBox "Ne doit pas dépasser 100%" End If End Sub est ce que je garde proc test () ??? Je ne crois pas l'avoir mis au bon endroit Au fait mes cellules contiennent une formule qui calcule le pourcentage. Je sais pas si c important ou pas... ca ne veut toujours pas marcher.. Encore Merci... |
|
|
#10 (permalink) |
|
Guest
Messages: n/a
|
Salut Moa,
J'ai essayé de potasser un bout dessus On a réussi à trouver qqch mais ca ne marche pas entièrement. Dans un premier temps, voici ce que ca donne: Private Sub Worksheet_Change(ByVal Target As Range) Dim Zone As Range Set Zone = Intersect(Target, Range("A1:A10")) If Zone Is Nothing Then Exit Sub For Each Cellule In Zone If (Cellule.Value > 1 Or Cellule.Value < 0) Then Cellule.Font.ColorIndex = 3 Cellule.Font.Bold = True Message = "La valeur de la cellule " & Cellule.Address(RowAbsolute:=False, ColumnAbsolute:=False) & " doit être compris entre 0 et 100." & Chr(13) & Chr(13) & "Veuillez saisir une valeur correcte." titre = "Valeur incorrecte" If IsNumeric(Cellule.Value) = True Then Defaut = Cellule.Value * 100 Else Defaut = "" End If Valeur = Defaut While (Valeur < 0 Or Valeur > 100) Valeur = InputBox(Message, titre, Defaut) Wend Cellule.Value = Valeur / 100 Cellule.Font.ColorIndex = 0 Cellule.Font.Bold = False End If Next Mais le truc c que ca marche que si on tape une valeur directement dans une cellule de la zone. Alors que mes cellules de A1 à A10 contienne une division. A1 = b12/c12 Comment faire?? ps: je n'ai toujours rien compris à Proc test () Merci bcp de votre patience à tous et de votre aide End Sub |
|
|
#11 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Aurélie,
Quand je regarde ta réponse à 12:12 je me pose la question de savoir si tu ne serais pas intéressée par une simple mise en forme conditionnelle qui te ferait apparaitre une couleur si tu dépasses les 100 % ? @+ Dan |
|
|
#12 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Dan,
J'ai voulu faire une mise en forme conditionnelle mais j'ai un pb car le classeur ne garde pas les formats (monétaires, inertion de commentaire et mise en forme conditionnelle). Je ne sais pas d'où ca peut venir. Du coup, je me suis rabattu sur les macros (alors que je ne suis pas douée question VBA). Si tu sais à quoi peut etre du ceci.... J'accepte volontiers ton aide. Merci beaucoup, Aurélie |
|
|
#13 (permalink) |
|
Guest
Messages: n/a
|
Bonsoir Aurélie,
Je ne vois pas très bien pourquoi ton classeur ne parvient pas à garder les formats. Est-il possible que tu places un fichier avec des données bidons de manière à ce que l'on puisse voir quel est le pb ? dans l'attente de te lire @+ Dan |
|
|
#14 (permalink) |
|
Guest
Messages: n/a
|
Bonjour Dan,
Donc je t'envoie en PJ un fichier bidon. J'ai essayé de regrouper un peu ce qui ne fonctionnait pas. J'ai mis les tarifs en format monétaire J'ai mis un commentaire en rouge J'ai fait une mise en forme conditionnelle sur les pourcentages: de 80% à 100% les chiffres sont italiques et vert. Voila Merci d'avance, A bientôt aurélie |
|
|
#15 (permalink) |
|
Guest
Messages: n/a
|
Bonjour,
Je pense que ton pb vient de version différente de Excel car : 1. Il n'y avait pas de format monétaire enregistré 2. L'indication de commentaire en rouge est visible 3. Les mise en forme cond. n'étaient pas présentes. A noter que lors de l'enregistrement un message est apparu pour me dire que je devais enregistrer le fichier au format le plus récent sinon on perdait les formats. Ceci confirme ton pb. Bref je t'ai refait un fichier que j'ai enregistré sous excel 97. Vérifies si c'est OK. Dans l'attente de te lire @+ Dan |
| ANNONCES | |
| Liens sociaux |
| Outils de la discussion | |
|
|