Boite de dialogue qui signale un dépassement de pourcentage

A

aurélie

Guest
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.
 
M

Moa

Guest
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
 
A

aurélie

Guest
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.
 
A

aurélie

Guest
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.
 
J

j_li

Guest
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
 
A

aurelie

Guest
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
 
M

Moa

Guest
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
 
A

aurelie

Guest
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...
 
A

aurelie

Guest
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
 
D

Dan

Guest
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
 
A

aurelie

Guest
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
 
D

Dan

Guest
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
 
A

aurelie

Guest
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
 

Pièces jointes

  • miseenforme.zip
    2.2 KB · Affichages: 10
  • miseenforme.zip
    2.2 KB · Affichages: 9
  • miseenforme.zip
    2.2 KB · Affichages: 9
D

Dan

Guest
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
 

Pièces jointes

  • miseenforme-Aurelie-66974-V2.zip
    15.1 KB · Affichages: 9

Discussions similaires

Réponses
9
Affichages
219

Statistiques des forums

Discussions
312 502
Messages
2 089 026
Membres
104 008
dernier inscrit
jojo1966