macro

al1000

XLDnaute Impliqué
Bonjour,

je voudrai creer une macro:







a+
 

Pièces jointes

  • perf.XLS
    20.5 KB · Affichages: 83
  • perf.XLS
    20.5 KB · Affichages: 85
  • perf.XLS
    20.5 KB · Affichages: 86

al1000

XLDnaute Impliqué
Re : macro

bonjour,


If Range("a28").Value = 1 Then
couleur = 10
nom = "rouge1"
ElseIf Range("a28").Value = 2 Then
couleur = 13
nom = "jaune1"
Else
couleur = 44
nom = "bleu1"
End If
ActiveSheet.Shapes.AddShape(msoShapeOval, 10, 340#, 29.5, 29.25).Select
Selection.Name = nom
Selection.ShapeRange.Fill.ForeColor.SchemeColor = couleur

sur cette macro c'est a28 qui peut prendre 3 valeur 1:2 ou 3

mais mois je veut voir quel forme est en premier plan et ensuite je determine un rond final à mettre en premier plan

a+
 

Eric 45

XLDnaute Occasionnel
Re : macro

Bonsoir le forum
Bonsoir al1000

Je ne comprend pas très bien ta démarche : comment veux tu choisir ta forme si ce n’est par un chiffre par exemple, ou une lettre,…. qui se situerait dans les cellules J6, H32 ou D50.
Je te joins un fichier sur lequel tu changes la valeur dans les cellules a28, a33, et a38 ( =cellules tests, l’équivalent serait j5….. ) et le rond est modifié. Dans ce cas là, tu n’as que 3 formes-rond, sinon tu en aurais 9 pour les 3 cellules que tu donnes (cela augmente le poids du fichier).
Bien entendu il faut l’adapter suivant ce que tu veux obtenir.

A+
 

Pièces jointes

  • perf_rond_02.zip
    13.2 KB · Affichages: 38

al1000

XLDnaute Impliqué
Re : macro

Bonjour,

Dim cellule_modifiée As String 1)pourquoi ces 5 lignes puis apres nous avons
Dim couleur As Integer private sub
Dim indice As String
Dim nom As String
Dim valeur01 As Integer

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

2)quel difference entre ces 2 lignes?
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Sub Worksheet_Change(ByVal Target As Excel.Range)


a+
 

al1000

XLDnaute Impliqué
Re : macro

bonjour,
je peux essaye d'ecrire toustes les coditions

si forme rougea, rougeb, rougec alors rouged
si forme rougea, jauneb, rougec alors rouged
si forme rougea, rougeb, jauneec alors rouged
si forme rougea, jauneb, jauneec alors jauned


mais ceci est long

je voudrais qu(il reconnaisse la forme qui est en premier plan des formes a puis des formes b

a+
 

Gorfael

XLDnaute Barbatruc
Re : macro

al1000 à dit:
bonjour,
je peux essaye d'ecrire toustes les coditions

si forme rougea, rougeb, rougec alors rouged
si forme rougea, jauneb, rougec alors rouged
si forme rougea, rougeb, jauneec alors rouged
si forme rougea, jauneb, jauneec alors jauned


mais ceci est long

je voudrais qu(il reconnaisse la forme qui est en premier plan des formes a puis des formes b

a+
Salut

Str_Nom = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name
te donne le nom de la forme en premier plan
tu peux l'adapter dans une boucle avec une décrémentation pour trouver la forme en premier plan de chaques séries
L'index des shapes étant fonction de la position :
index = 1 plus bas, index le plus grand en haut
A+
 

Eric 45

XLDnaute Occasionnel
Re : macro

Bonsoir le forum
Bonsoir al1000, Gorfael

Si je peux me permettre et si j'ai bien compris :
Les "ronds" sont "dessinés" par rapport aux valeurs qui se trouvent dans les cellules J6, H32 ou D50, pourquoi vas tu chercher le "nom du rond" alors que tu peux prendre la valeur de ces cellules. Franchement je ne vois pas pourquoi tu te compliques, ou alors tu nous "caches" quelque chose.

A+
 

al1000

XLDnaute Impliqué
Re : macro

bonjour;
pour repondre à eric 45
Si je peux me permettre et si j'ai bien compris :
Les "ronds" sont "dessinés" par rapport aux valeurs qui se trouvent dans les cellules J6, H32 ou D50, REPONSE: j'ai 3 formes (a b et c)et chaque formes a 3 couleurs (a jaune, a vert, a bleu, b jaune....).en fonction de la cellule j6 la forme a met soit le jaune , vert ou bleu en premier plan et de meme pour les cellules h 32 pour la forme b et d50 la forme c .ainsi pour ecrire toute les conditions je souhaiterai savoir si il exciste une ecriture dans un macro qui reconaisse la forme en premier plan?


pourquoi vas tu chercher le "nom du rond" alors que tu peux prendre la valeur de ces cellules. Franchement je ne vois pas pourquoi tu te compliques, ou alors tu nous "caches" quelque chose.


la reponse de Gorfael me semble interessante mais j'ai du mal à la comprendre

il a t il quelqu'un qui pourrait me la decomposer?


merci à tous
 

Gorfael

XLDnaute Barbatruc
Re : macro

al1000 à dit:
bonjour;
pour repondre à eric 45
Si je peux me permettre et si j'ai bien compris :
Les "ronds" sont "dessinés" par rapport aux valeurs qui se trouvent dans les cellules J6, H32 ou D50, REPONSE: j'ai 3 formes (a b et c)et chaque formes a 3 couleurs (a jaune, a vert, a bleu, b jaune....).en fonction de la cellule j6 la forme a met soit le jaune , vert ou bleu en premier plan et de meme pour les cellules h 32 pour la forme b et d50 la forme c .ainsi pour ecrire toute les conditions je souhaiterai savoir si il exciste une ecriture dans un macro qui reconaisse la forme en premier plan?


pourquoi vas tu chercher le "nom du rond" alors que tu peux prendre la valeur de ces cellules. Franchement je ne vois pas pourquoi tu te compliques, ou alors tu nous "caches" quelque chose.


la reponse de Gorfael me semble interessante mais j'ai du mal à la comprendre

il a t il quelqu'un qui pourrait me la decomposer?


merci à tous
Salut
3 séries (A, B, C) de forme de couleurs (R, J, B)
un clic sur le bouton donne pour chaque série le nom de la forme en premier plan en colonne D. Par exemple
A_J, B_B, C_R
série A, c'est la couleur jaune
Série B, couleur bleue
Série C, couleur rouge
Ce n'est qu'un exemple, mais ça explique (enfin, pour moi)
Par contre, je pense que la réponse de Eric 45 est plus adaptée : si tu mets des formes en ordre par macro, il suffit d'utiliser la même formule que celle de la macro de placement.
Le problème avec tes formes, c'est qu'il faut isoler des formes participants aux séries de toutes les autres qui peuevent être au-dessus, en dessous, ou au mileiu des séries

avec ma codification des noms, on peut remplacer
Range("D6")=F_A par,
par exemple
Select case right(F_A,1)
case "J"
Range("D6")="La couleur jaune de la série A"
.....
end select

ou faire un tableau pour le stockage( dim Tab_V(1 to 2, 1 to 3)
en tab_V(1, ) on met le nom
en Tab_V(2, ) on constitue la phrase

et on fait une boucle
tab(2,x)= "la série " & left(tab_v(1,X),1) & " est de la couleur " & right(tab_v(1,X),1)
Mais pour 3, ça vaut pas le coup
A+
 

Pièces jointes

  • perf_Mod.XLS
    27 KB · Affichages: 61

al1000

XLDnaute Impliqué
Re : macro

bonjour,

je veux assayer d'apter la macro mais je n'arrive pas

si j'ai bien compris f est une variable ; donc je ne la change pas


A va se nommer valeur
B va se nommer produit
et C va se nommer client


mais quand je remplace le A par valeur
le B par produit et le C par client

ma macro ne fonctionne pas

pourquoi?
 

Gorfael

XLDnaute Barbatruc
Re : macro

al1000 à dit:
bonjour,

peut etre que j'ai une reponse ( à voi)

mais forme se nomme produit vert ou produit rouge ou produit jaune

mais entre produit et rouge j'ai un espace

a+
Salut
Mes formes ont un noms simple, donc, j'ai fait simple. pour ce que je comprends, tes formes ont un nom plus complexe
donc, quand je teste sur ucase(left(f.name,1)) avec comme valeur A, B et c, il faut que tu teste sur les valeur "V", "P" et "C" pour déterminer la série Valeur Produit et client
Pour la couleur, tu ne peux pas différencier sur la dernière lettre qui est la même pour jaune et rouge, donc Ucase(Right(F.Name,1)) doit être remplacé par Ucase(Right(F.Name,2)) avec une comparaison avec les valeurs "RT" (vert), "NE" (jaune) et "GE" (rouge)
A+
 

al1000

XLDnaute Impliqué
Re : macro

Bonjour,

Option Explicit

Sub test()
Dim F_Rond As Shape
Dim F_A As String
Dim F_B As String
Dim F_C As String
Dim X As Integer

For X = ActiveSheet.Shapes.Count To 1 Step -1 pourquoi count to 1 step -1?
If Left(ActiveSheet.Shapes(X).Name, 2) = "A_" And F_A = "" Then
F_A = ActiveSheet.Shapes(X).Name
End If
If Left(ActiveSheet.Shapes(X).Name, 2) = "B_" And F_B = "" Then
F_B = ActiveSheet.Shapes(X).Name
End If
If Left(ActiveSheet.Shapes(X).Name, 2) = "C_" And F_C = "" Then
F_C = ActiveSheet.Shapes(X).Name
End If

If F_A <> "" And F_B <> "" And F_C <> "" Then Exit For
Next X
Range("D6") = F_A
Range("D13") = F_B
Range("D20") = F_C


End Sub



si je remplace

tous les A par sec
tous les B par pro
tous les C par cli

et rond par per

ma macro ne fonctionne pas pourquoi?
 

Discussions similaires