J’essaie de modifier un ancien module de classe de Michel Pierron qui
permettait de changer les couleurs de plusieurs éléments d’un graphique qui
pouvait prendre 69 types différents ( Serge Garneau).Malheureusement je ne
comprends pas tout.
http://cjoint.com/?ddkSwiibsy
Afin de progresser je commence par des questions simples :
Dans le code du Userform nous avons :
Option Explicit
Private iColors(1 To 56) As New lblClass
Private Sub UserForm_Initialize()
Dim u%, i%, Ctl As Control
With ThisWorkbook.Sheets("69Graph")
' Recherche de l'index du graphique actuel
i = InStr(1, .ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1)
u = Val(Mid$(.ChartObjects("graphe").Chart.ChartTitle.Text, i + 1))
' Recherche du numéro de ligne correspondant sur la feuille "69Graph"
i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True)
' Positionnement de la ListeBox sur le graphique actuel
Me.ListBox1.ListIndex = i - 1
' Couleur de fond du graphique actuel
With .ChartObjects("graphe").Chart.ChartArea
u = .Interior.ColorIndex
End With
End With
' Create lblGroup objects
For Each Ctl In Me.Controls
If Left(Ctl.Name, 3) = "lbl" Then
i = Val(Mid(Ctl.Name, 4))
Set iColors(i).lblGroup = Ctl
' Présélection palette quand concordance des couleurs
If i = u Then
Me.Current.Top = Ctl.Top - 2
Me.Current.Left = Ctl.Left - 2
End If
End If
Next Ctl
End Sub
1)Si le titre de mon Graphique est Charttype=xlPie(5)
Je suppose que l’instruction ‘’ i =
InStr(1,ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1) donne la
position de la ‘’( ‘’dans le titre donc avec ce titre i=16
L’instruction suivante donne donc pour u la valeur 5)
Sachant que en colonne 4 j’ai 5 je ne comprends pas comment l’instruction
i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) trouve le numéro
de ligne correspondant sur la feuille "69Graph"
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichDenis
A ) Cette ligne est reliée à la fonction plus bas : Si besoin d'aide sur la signification d'une ligne de code particulière...spécifie laquelle !
| i = RowFind(....)
Dans le même module, tu as cette fonction '------------------ ' Recherche du N° de ligne correspondant à une chaîne (partielle ou non) Private Function RowFind&(Sh As Worksheet, ByVal Col%, What As Variant, Whole As Boolean) Dim W As Range, Who As Byte If Whole Then Who = 1 Else Who = 2 Set W = Sh.Columns(Col).Find(What, LookAt:=Who) If W Is Nothing Then RowFind = 0 Else RowFind = W.Row End Function '------------------
B ) Ces 2 lignes permettent d'avoir un petit carré autour du bouton de couleur (label) qui est associé à la couleur de l'objet graphique sélectionné ... ce qui donne au bouton l'impression qu'il est sélectionné... Si tu observes bien les boutons du formulaire, autour du bouton affichant la couleur blanche (lbl2), il y a un autre Label appelé Current. Ces 2 lignes positionnes ce label (current) autour du bouton désiré... (le -2 permet de centré verticalement et horizontalement ce label (current) Me.Current.Top = Ctl.Top - 2 Me.Current.Left = Ctl.Left - 2
"Jean-Paul V" a écrit dans le message de news:
Bonjour à tous
J'essaie de modifier un ancien module de classe de Michel Pierron qui permettait de changer les couleurs de plusieurs éléments d'un graphique qui pouvait prendre 69 types différents ( Serge Garneau).Malheureusement je ne comprends pas tout. http://cjoint.com/?ddkSwiibsy Afin de progresser je commence par des questions simples : Dans le code du Userform nous avons :
Option Explicit Private iColors(1 To 56) As New lblClass
Private Sub UserForm_Initialize() Dim u%, i%, Ctl As Control With ThisWorkbook.Sheets("69Graph") ' Recherche de l'index du graphique actuel i = InStr(1, .ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1) u = Val(Mid$(.ChartObjects("graphe").Chart.ChartTitle.Text, i + 1)) ' Recherche du numéro de ligne correspondant sur la feuille "69Graph" i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) ' Positionnement de la ListeBox sur le graphique actuel Me.ListBox1.ListIndex = i - 1 ' Couleur de fond du graphique actuel With .ChartObjects("graphe").Chart.ChartArea u = .Interior.ColorIndex End With End With ' Create lblGroup objects For Each Ctl In Me.Controls If Left(Ctl.Name, 3) = "lbl" Then i = Val(Mid(Ctl.Name, 4)) Set iColors(i).lblGroup = Ctl ' Présélection palette quand concordance des couleurs If i = u Then Me.Current.Top = Ctl.Top - 2 Me.Current.Left = Ctl.Left - 2 End If End If Next Ctl End Sub
1)Si le titre de mon Graphique est Charttype=xlPie(5) Je suppose que l'instruction '' i InStr(1,ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1) donne la position de la ''( ''dans le titre donc avec ce titre i L'instruction suivante donne donc pour u la valeur 5) Sachant que en colonne 4 j'ai 5 je ne comprends pas comment l'instruction i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) trouve le numéro de ligne correspondant sur la feuille "69Graph"
A ) Cette ligne est reliée à la fonction plus bas :
Si besoin d'aide sur la signification d'une ligne de code
particulière...spécifie laquelle !
| i = RowFind(....)
Dans le même module, tu as cette fonction
'------------------
' Recherche du N° de ligne correspondant à une chaîne (partielle ou non)
Private Function RowFind&(Sh As Worksheet, ByVal Col%, What As Variant, Whole As Boolean)
Dim W As Range, Who As Byte
If Whole Then Who = 1 Else Who = 2
Set W = Sh.Columns(Col).Find(What, LookAt:=Who)
If W Is Nothing Then RowFind = 0 Else RowFind = W.Row
End Function
'------------------
B ) Ces 2 lignes permettent d'avoir un petit carré autour
du bouton de couleur (label) qui est associé à la couleur
de l'objet graphique sélectionné ... ce qui donne au bouton
l'impression qu'il est sélectionné...
Si tu observes bien les boutons du formulaire, autour du bouton
affichant la couleur blanche (lbl2), il y a un autre Label appelé
Current. Ces 2 lignes positionnes ce label (current) autour
du bouton désiré... (le -2 permet de centré verticalement et
horizontalement ce label (current)
Me.Current.Top = Ctl.Top - 2
Me.Current.Left = Ctl.Left - 2
"Jean-Paul V" <JeanPaulV@discussions.microsoft.com> a écrit dans le message de news:
61060CDE-6D4D-41DE-A663-AE080D037583@microsoft.com...
Bonjour à tous
J'essaie de modifier un ancien module de classe de Michel Pierron qui
permettait de changer les couleurs de plusieurs éléments d'un graphique qui
pouvait prendre 69 types différents ( Serge Garneau).Malheureusement je ne
comprends pas tout.
http://cjoint.com/?ddkSwiibsy
Afin de progresser je commence par des questions simples :
Dans le code du Userform nous avons :
Option Explicit
Private iColors(1 To 56) As New lblClass
Private Sub UserForm_Initialize()
Dim u%, i%, Ctl As Control
With ThisWorkbook.Sheets("69Graph")
' Recherche de l'index du graphique actuel
i = InStr(1, .ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1)
u = Val(Mid$(.ChartObjects("graphe").Chart.ChartTitle.Text, i + 1))
' Recherche du numéro de ligne correspondant sur la feuille "69Graph"
i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True)
' Positionnement de la ListeBox sur le graphique actuel
Me.ListBox1.ListIndex = i - 1
' Couleur de fond du graphique actuel
With .ChartObjects("graphe").Chart.ChartArea
u = .Interior.ColorIndex
End With
End With
' Create lblGroup objects
For Each Ctl In Me.Controls
If Left(Ctl.Name, 3) = "lbl" Then
i = Val(Mid(Ctl.Name, 4))
Set iColors(i).lblGroup = Ctl
' Présélection palette quand concordance des couleurs
If i = u Then
Me.Current.Top = Ctl.Top - 2
Me.Current.Left = Ctl.Left - 2
End If
End If
Next Ctl
End Sub
1)Si le titre de mon Graphique est Charttype=xlPie(5)
Je suppose que l'instruction '' i InStr(1,ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1) donne la
position de la ''( ''dans le titre donc avec ce titre i
L'instruction suivante donne donc pour u la valeur 5)
Sachant que en colonne 4 j'ai 5 je ne comprends pas comment l'instruction
i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) trouve le numéro
de ligne correspondant sur la feuille "69Graph"
A ) Cette ligne est reliée à la fonction plus bas : Si besoin d'aide sur la signification d'une ligne de code particulière...spécifie laquelle !
| i = RowFind(....)
Dans le même module, tu as cette fonction '------------------ ' Recherche du N° de ligne correspondant à une chaîne (partielle ou non) Private Function RowFind&(Sh As Worksheet, ByVal Col%, What As Variant, Whole As Boolean) Dim W As Range, Who As Byte If Whole Then Who = 1 Else Who = 2 Set W = Sh.Columns(Col).Find(What, LookAt:=Who) If W Is Nothing Then RowFind = 0 Else RowFind = W.Row End Function '------------------
B ) Ces 2 lignes permettent d'avoir un petit carré autour du bouton de couleur (label) qui est associé à la couleur de l'objet graphique sélectionné ... ce qui donne au bouton l'impression qu'il est sélectionné... Si tu observes bien les boutons du formulaire, autour du bouton affichant la couleur blanche (lbl2), il y a un autre Label appelé Current. Ces 2 lignes positionnes ce label (current) autour du bouton désiré... (le -2 permet de centré verticalement et horizontalement ce label (current) Me.Current.Top = Ctl.Top - 2 Me.Current.Left = Ctl.Left - 2
"Jean-Paul V" a écrit dans le message de news:
Bonjour à tous
J'essaie de modifier un ancien module de classe de Michel Pierron qui permettait de changer les couleurs de plusieurs éléments d'un graphique qui pouvait prendre 69 types différents ( Serge Garneau).Malheureusement je ne comprends pas tout. http://cjoint.com/?ddkSwiibsy Afin de progresser je commence par des questions simples : Dans le code du Userform nous avons :
Option Explicit Private iColors(1 To 56) As New lblClass
Private Sub UserForm_Initialize() Dim u%, i%, Ctl As Control With ThisWorkbook.Sheets("69Graph") ' Recherche de l'index du graphique actuel i = InStr(1, .ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1) u = Val(Mid$(.ChartObjects("graphe").Chart.ChartTitle.Text, i + 1)) ' Recherche du numéro de ligne correspondant sur la feuille "69Graph" i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) ' Positionnement de la ListeBox sur le graphique actuel Me.ListBox1.ListIndex = i - 1 ' Couleur de fond du graphique actuel With .ChartObjects("graphe").Chart.ChartArea u = .Interior.ColorIndex End With End With ' Create lblGroup objects For Each Ctl In Me.Controls If Left(Ctl.Name, 3) = "lbl" Then i = Val(Mid(Ctl.Name, 4)) Set iColors(i).lblGroup = Ctl ' Présélection palette quand concordance des couleurs If i = u Then Me.Current.Top = Ctl.Top - 2 Me.Current.Left = Ctl.Left - 2 End If End If Next Ctl End Sub
1)Si le titre de mon Graphique est Charttype=xlPie(5) Je suppose que l'instruction '' i InStr(1,ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1) donne la position de la ''( ''dans le titre donc avec ce titre i L'instruction suivante donne donc pour u la valeur 5) Sachant que en colonne 4 j'ai 5 je ne comprends pas comment l'instruction i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) trouve le numéro de ligne correspondant sur la feuille "69Graph"
Merci pour votre réponse B cela répond à 2 questions que je me posais.
Pour la question A, je crois comprendre ce que fait la fonction RowFind(....) elle cherche dans la 4ème colonne de la feuille 69Graph un morceau de libellé déterminé par les 2 fonctions InStr et Val(Mid$(.ChartObjects et elle donne la ligne.
Quand je regarde plus bas comment est définie la fonction RowFind je ne comprends rien.
If Whole Then Who = 1 Else Who = 2
1 ) Qu'est-ce que cette variable Who non définie ?
Set W = Sh.Columns(Col).Find(What, LookAt:=Who)
2 ) le Find(What, LookAt:=Who) me laisse perplexe
mais dans ma question A j'ai fait l'impasse sur le comment ça marche du RowFind.
malgrè cela je ne comprends pas, je disais : Si le titre de mon Graphique est Charttype=xlPie(5) Je suppose que l'instruction '' i = InStr(1,ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1) donne la position de la ''( ''dans le titre donc avec ce titre i 3 ) est-ce exact? l'instruction suivante u = Val(Mid$(.ChartObjects("graphe").Chart.ChartTitle.Text, i + 1)) donne le morceau de libellé après ( , donc on trouve pour u la valeur '' 5)'' 4) est-ce exact ?
5) si 3) et 4) sont exacts comment la fonction i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) peut elle trouver ''5) '' dans la 4ème colonne alors que j'ai 5
@+ j'espère et merci encore pour la réponse B
A ) Cette ligne est reliée à la fonction plus bas : Si besoin d'aide sur la signification d'une ligne de code particulière...spécifie laquelle !
| i = RowFind(....)
Dans le même module, tu as cette fonction '------------------ ' Recherche du N° de ligne correspondant à une chaîne (partielle ou non) Private Function RowFind&(Sh As Worksheet, ByVal Col%, What As Variant, Whole As Boolean) Dim W As Range, Who As Byte If Whole Then Who = 1 Else Who = 2 Set W = Sh.Columns(Col).Find(What, LookAt:=Who) If W Is Nothing Then RowFind = 0 Else RowFind = W.Row End Function '------------------
B ) Ces 2 lignes permettent d'avoir un petit carré autour du bouton de couleur (label) qui est associé à la couleur de l'objet graphique sélectionné ... ce qui donne au bouton l'impression qu'il est sélectionné... Si tu observes bien les boutons du formulaire, autour du bouton affichant la couleur blanche (lbl2), il y a un autre Label appelé Current. Ces 2 lignes positionnes ce label (current) autour du bouton désiré... (le -2 permet de centré verticalement et horizontalement ce label (current) Me.Current.Top = Ctl.Top - 2 Me.Current.Left = Ctl.Left - 2
"Jean-Paul V" a écrit dans le message de news:
Bonjour à tous
J'essaie de modifier un ancien module de classe de Michel Pierron qui permettait de changer les couleurs de plusieurs éléments d'un graphique qui pouvait prendre 69 types différents ( Serge Garneau).Malheureusement je ne comprends pas tout. http://cjoint.com/?ddkSwiibsy Afin de progresser je commence par des questions simples : Dans le code du Userform nous avons :
Option Explicit Private iColors(1 To 56) As New lblClass
Private Sub UserForm_Initialize() Dim u%, i%, Ctl As Control With ThisWorkbook.Sheets("69Graph") ' Recherche de l'index du graphique actuel i = InStr(1, .ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1) u = Val(Mid$(.ChartObjects("graphe").Chart.ChartTitle.Text, i + 1)) ' Recherche du numéro de ligne correspondant sur la feuille "69Graph" i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) ' Positionnement de la ListeBox sur le graphique actuel Me.ListBox1.ListIndex = i - 1 ' Couleur de fond du graphique actuel With .ChartObjects("graphe").Chart.ChartArea u = .Interior.ColorIndex End With End With ' Create lblGroup objects For Each Ctl In Me.Controls If Left(Ctl.Name, 3) = "lbl" Then i = Val(Mid(Ctl.Name, 4)) Set iColors(i).lblGroup = Ctl ' Présélection palette quand concordance des couleurs If i = u Then Me.Current.Top = Ctl.Top - 2 Me.Current.Left = Ctl.Left - 2 End If End If Next Ctl End Sub
1)Si le titre de mon Graphique est Charttype=xlPie(5) Je suppose que l'instruction '' i > InStr(1,ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1) donne la position de la ''( ''dans le titre donc avec ce titre i L'instruction suivante donne donc pour u la valeur 5) Sachant que en colonne 4 j'ai 5 je ne comprends pas comment l'instruction i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) trouve le numéro de ligne correspondant sur la feuille "69Graph"
Merci pour votre réponse B cela répond à 2 questions que je me posais.
Pour la question A, je crois comprendre ce que fait la fonction
RowFind(....) elle cherche dans la 4ème colonne de la feuille 69Graph un
morceau de libellé déterminé par les 2 fonctions InStr et
Val(Mid$(.ChartObjects et elle donne la ligne.
Quand je regarde plus bas comment est définie la fonction RowFind je ne
comprends rien.
If Whole Then Who = 1 Else Who = 2
1 ) Qu'est-ce que cette variable Who non définie ?
Set W = Sh.Columns(Col).Find(What, LookAt:=Who)
2 ) le Find(What, LookAt:=Who) me laisse perplexe
mais dans ma question A j'ai fait l'impasse sur le comment ça marche du
RowFind.
malgrè cela je ne comprends pas, je disais :
Si le titre de mon Graphique est Charttype=xlPie(5)
Je suppose que l'instruction '' i =
InStr(1,ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1) donne la
position de la ''( ''dans le titre donc avec ce titre i
3 ) est-ce exact?
l'instruction suivante
u = Val(Mid$(.ChartObjects("graphe").Chart.ChartTitle.Text, i + 1))
donne le morceau de libellé après ( , donc on trouve pour u la valeur '' 5)''
4) est-ce exact ?
5) si 3) et 4) sont exacts comment la fonction
i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True)
peut elle trouver ''5) '' dans la 4ème colonne alors que j'ai 5
@+ j'espère et merci encore pour la réponse B
A ) Cette ligne est reliée à la fonction plus bas :
Si besoin d'aide sur la signification d'une ligne de code
particulière...spécifie laquelle !
| i = RowFind(....)
Dans le même module, tu as cette fonction
'------------------
' Recherche du N° de ligne correspondant à une chaîne (partielle ou non)
Private Function RowFind&(Sh As Worksheet, ByVal Col%, What As Variant, Whole As Boolean)
Dim W As Range, Who As Byte
If Whole Then Who = 1 Else Who = 2
Set W = Sh.Columns(Col).Find(What, LookAt:=Who)
If W Is Nothing Then RowFind = 0 Else RowFind = W.Row
End Function
'------------------
B ) Ces 2 lignes permettent d'avoir un petit carré autour
du bouton de couleur (label) qui est associé à la couleur
de l'objet graphique sélectionné ... ce qui donne au bouton
l'impression qu'il est sélectionné...
Si tu observes bien les boutons du formulaire, autour du bouton
affichant la couleur blanche (lbl2), il y a un autre Label appelé
Current. Ces 2 lignes positionnes ce label (current) autour
du bouton désiré... (le -2 permet de centré verticalement et
horizontalement ce label (current)
Me.Current.Top = Ctl.Top - 2
Me.Current.Left = Ctl.Left - 2
"Jean-Paul V" <JeanPaulV@discussions.microsoft.com> a écrit dans le message de news:
61060CDE-6D4D-41DE-A663-AE080D037583@microsoft.com...
Bonjour à tous
J'essaie de modifier un ancien module de classe de Michel Pierron qui
permettait de changer les couleurs de plusieurs éléments d'un graphique qui
pouvait prendre 69 types différents ( Serge Garneau).Malheureusement je ne
comprends pas tout.
http://cjoint.com/?ddkSwiibsy
Afin de progresser je commence par des questions simples :
Dans le code du Userform nous avons :
Option Explicit
Private iColors(1 To 56) As New lblClass
Private Sub UserForm_Initialize()
Dim u%, i%, Ctl As Control
With ThisWorkbook.Sheets("69Graph")
' Recherche de l'index du graphique actuel
i = InStr(1, .ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1)
u = Val(Mid$(.ChartObjects("graphe").Chart.ChartTitle.Text, i + 1))
' Recherche du numéro de ligne correspondant sur la feuille "69Graph"
i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True)
' Positionnement de la ListeBox sur le graphique actuel
Me.ListBox1.ListIndex = i - 1
' Couleur de fond du graphique actuel
With .ChartObjects("graphe").Chart.ChartArea
u = .Interior.ColorIndex
End With
End With
' Create lblGroup objects
For Each Ctl In Me.Controls
If Left(Ctl.Name, 3) = "lbl" Then
i = Val(Mid(Ctl.Name, 4))
Set iColors(i).lblGroup = Ctl
' Présélection palette quand concordance des couleurs
If i = u Then
Me.Current.Top = Ctl.Top - 2
Me.Current.Left = Ctl.Left - 2
End If
End If
Next Ctl
End Sub
1)Si le titre de mon Graphique est Charttype=xlPie(5)
Je suppose que l'instruction '' i > InStr(1,ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1) donne la
position de la ''( ''dans le titre donc avec ce titre i
L'instruction suivante donne donc pour u la valeur 5)
Sachant que en colonne 4 j'ai 5 je ne comprends pas comment l'instruction
i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) trouve le numéro
de ligne correspondant sur la feuille "69Graph"
Merci pour votre réponse B cela répond à 2 questions que je me posais.
Pour la question A, je crois comprendre ce que fait la fonction RowFind(....) elle cherche dans la 4ème colonne de la feuille 69Graph un morceau de libellé déterminé par les 2 fonctions InStr et Val(Mid$(.ChartObjects et elle donne la ligne.
Quand je regarde plus bas comment est définie la fonction RowFind je ne comprends rien.
If Whole Then Who = 1 Else Who = 2
1 ) Qu'est-ce que cette variable Who non définie ?
Set W = Sh.Columns(Col).Find(What, LookAt:=Who)
2 ) le Find(What, LookAt:=Who) me laisse perplexe
mais dans ma question A j'ai fait l'impasse sur le comment ça marche du RowFind.
malgrè cela je ne comprends pas, je disais : Si le titre de mon Graphique est Charttype=xlPie(5) Je suppose que l'instruction '' i = InStr(1,ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1) donne la position de la ''( ''dans le titre donc avec ce titre i 3 ) est-ce exact? l'instruction suivante u = Val(Mid$(.ChartObjects("graphe").Chart.ChartTitle.Text, i + 1)) donne le morceau de libellé après ( , donc on trouve pour u la valeur '' 5)'' 4) est-ce exact ?
5) si 3) et 4) sont exacts comment la fonction i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) peut elle trouver ''5) '' dans la 4ème colonne alors que j'ai 5
@+ j'espère et merci encore pour la réponse B
A ) Cette ligne est reliée à la fonction plus bas : Si besoin d'aide sur la signification d'une ligne de code particulière...spécifie laquelle !
| i = RowFind(....)
Dans le même module, tu as cette fonction '------------------ ' Recherche du N° de ligne correspondant à une chaîne (partielle ou non) Private Function RowFind&(Sh As Worksheet, ByVal Col%, What As Variant, Whole As Boolean) Dim W As Range, Who As Byte If Whole Then Who = 1 Else Who = 2 Set W = Sh.Columns(Col).Find(What, LookAt:=Who) If W Is Nothing Then RowFind = 0 Else RowFind = W.Row End Function '------------------
B ) Ces 2 lignes permettent d'avoir un petit carré autour du bouton de couleur (label) qui est associé à la couleur de l'objet graphique sélectionné ... ce qui donne au bouton l'impression qu'il est sélectionné... Si tu observes bien les boutons du formulaire, autour du bouton affichant la couleur blanche (lbl2), il y a un autre Label appelé Current. Ces 2 lignes positionnes ce label (current) autour du bouton désiré... (le -2 permet de centré verticalement et horizontalement ce label (current) Me.Current.Top = Ctl.Top - 2 Me.Current.Left = Ctl.Left - 2
"Jean-Paul V" a écrit dans le message de news:
Bonjour à tous
J'essaie de modifier un ancien module de classe de Michel Pierron qui permettait de changer les couleurs de plusieurs éléments d'un graphique qui pouvait prendre 69 types différents ( Serge Garneau).Malheureusement je ne comprends pas tout. http://cjoint.com/?ddkSwiibsy Afin de progresser je commence par des questions simples : Dans le code du Userform nous avons :
Option Explicit Private iColors(1 To 56) As New lblClass
Private Sub UserForm_Initialize() Dim u%, i%, Ctl As Control With ThisWorkbook.Sheets("69Graph") ' Recherche de l'index du graphique actuel i = InStr(1, .ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1) u = Val(Mid$(.ChartObjects("graphe").Chart.ChartTitle.Text, i + 1)) ' Recherche du numéro de ligne correspondant sur la feuille "69Graph" i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) ' Positionnement de la ListeBox sur le graphique actuel Me.ListBox1.ListIndex = i - 1 ' Couleur de fond du graphique actuel With .ChartObjects("graphe").Chart.ChartArea u = .Interior.ColorIndex End With End With ' Create lblGroup objects For Each Ctl In Me.Controls If Left(Ctl.Name, 3) = "lbl" Then i = Val(Mid(Ctl.Name, 4)) Set iColors(i).lblGroup = Ctl ' Présélection palette quand concordance des couleurs If i = u Then Me.Current.Top = Ctl.Top - 2 Me.Current.Left = Ctl.Left - 2 End If End If Next Ctl End Sub
1)Si le titre de mon Graphique est Charttype=xlPie(5) Je suppose que l'instruction '' i > InStr(1,ChartObjects("graphe").Chart.ChartTitle.Text, "(", 1) donne la position de la ''( ''dans le titre donc avec ce titre i L'instruction suivante donne donc pour u la valeur 5) Sachant que en colonne 4 j'ai 5 je ne comprends pas comment l'instruction i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) trouve le numéro de ligne correspondant sur la feuille "69Graph"
| i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True)
'------------------------- Private Function RowFind&(Sh As Worksheet, ByVal Col%, What As Variant, Whole As Boolean) Dim W As Range, Who As Byte If Whole Then Who = 1 Else Who = 2 Set W = Sh.Columns(Col).Find(What, LookAt:=Who) If W Is Nothing Then RowFind = 0 Else RowFind = W.Row End Function '-------------------------
Chaque paramètre de la fonction Sh As Worksheet = ThisWorkbook.Sheets("69Graph") ByVal Col% = 4 What As Variant = La variable U définit dans la procédure appelant la fonction Whole As Boolean = True
Cette ligne de code : If Whole Then Who = 1 Else Who = 2 Sert à déterminer si la méthode Find à la ligne suivante doit utiliser la valeur Xlpart ou XlWhole lorsqu'elle recherche la valeur de U dans la colonne 4 La valeur numérique des 2 constantes du paramètre "LookAt" de la méthode Find est : XlPart = 2 XlWhole = 1 En conséquence, selon que le paramètre est à true ou False dans la ligne de code appelant la fonction i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) La méthode Find uilisera LookAt:= XlPart ou LookAt:= XlWhole
Comment déterminer la valeur numérique d'une constante d'un paramêtre de fonction : A ) dans la fenêtre de l'éditeur de code, ouvre l'explorateur d'objet B ) dans la boîte de saisie recherche, tu tapes le paramètre : LookAt C ) dans la fenêtre du bas, à droite, apparaît les 2 valeurs que ce paramêtre peut prende D ) Si tu sélectiones à tour de rôle chacun deux valeurs, tu verras dans le bas de la fenêtre son équivalent numérique.
| i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True)
'-------------------------
Private Function RowFind&(Sh As Worksheet, ByVal Col%, What As Variant, Whole As Boolean)
Dim W As Range, Who As Byte
If Whole Then Who = 1 Else Who = 2
Set W = Sh.Columns(Col).Find(What, LookAt:=Who)
If W Is Nothing Then RowFind = 0 Else RowFind = W.Row
End Function
'-------------------------
Chaque paramètre de la fonction
Sh As Worksheet = ThisWorkbook.Sheets("69Graph")
ByVal Col% = 4
What As Variant = La variable U définit dans la procédure appelant la fonction
Whole As Boolean = True
Cette ligne de code :
If Whole Then Who = 1 Else Who = 2
Sert à déterminer si la méthode Find à la ligne suivante doit
utiliser la valeur Xlpart ou XlWhole lorsqu'elle recherche
la valeur de U dans la colonne 4
La valeur numérique des 2 constantes du paramètre "LookAt"
de la méthode Find est :
XlPart = 2
XlWhole = 1
En conséquence, selon que le paramètre est à true ou False dans
la ligne de code appelant la fonction
i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True)
La méthode Find uilisera LookAt:= XlPart ou LookAt:= XlWhole
Comment déterminer la valeur numérique d'une constante d'un paramêtre de fonction :
A ) dans la fenêtre de l'éditeur de code,
ouvre l'explorateur d'objet
B ) dans la boîte de saisie recherche, tu tapes le paramètre : LookAt
C ) dans la fenêtre du bas, à droite, apparaît les 2 valeurs que ce paramêtre
peut prende
D ) Si tu sélectiones à tour de rôle chacun deux valeurs, tu verras dans le bas
de la fenêtre son équivalent numérique.
| i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True)
'------------------------- Private Function RowFind&(Sh As Worksheet, ByVal Col%, What As Variant, Whole As Boolean) Dim W As Range, Who As Byte If Whole Then Who = 1 Else Who = 2 Set W = Sh.Columns(Col).Find(What, LookAt:=Who) If W Is Nothing Then RowFind = 0 Else RowFind = W.Row End Function '-------------------------
Chaque paramètre de la fonction Sh As Worksheet = ThisWorkbook.Sheets("69Graph") ByVal Col% = 4 What As Variant = La variable U définit dans la procédure appelant la fonction Whole As Boolean = True
Cette ligne de code : If Whole Then Who = 1 Else Who = 2 Sert à déterminer si la méthode Find à la ligne suivante doit utiliser la valeur Xlpart ou XlWhole lorsqu'elle recherche la valeur de U dans la colonne 4 La valeur numérique des 2 constantes du paramètre "LookAt" de la méthode Find est : XlPart = 2 XlWhole = 1 En conséquence, selon que le paramètre est à true ou False dans la ligne de code appelant la fonction i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) La méthode Find uilisera LookAt:= XlPart ou LookAt:= XlWhole
Comment déterminer la valeur numérique d'une constante d'un paramêtre de fonction : A ) dans la fenêtre de l'éditeur de code, ouvre l'explorateur d'objet B ) dans la boîte de saisie recherche, tu tapes le paramètre : LookAt C ) dans la fenêtre du bas, à droite, apparaît les 2 valeurs que ce paramêtre peut prende D ) Si tu sélectiones à tour de rôle chacun deux valeurs, tu verras dans le bas de la fenêtre son équivalent numérique.
Jean-Paul V
Bonjour MichDenis
Merci pour cette réponse détaillée et pédagogique. Je viens de découvrir l'utilité de l'explorateur d'objet. Il faudrait que je creuse ce sujet.
Bonne journée
| i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True)
'------------------------- Private Function RowFind&(Sh As Worksheet, ByVal Col%, What As Variant, Whole As Boolean) Dim W As Range, Who As Byte If Whole Then Who = 1 Else Who = 2 Set W = Sh.Columns(Col).Find(What, LookAt:=Who) If W Is Nothing Then RowFind = 0 Else RowFind = W.Row End Function '-------------------------
Chaque paramètre de la fonction Sh As Worksheet = ThisWorkbook.Sheets("69Graph") ByVal Col% = 4 What As Variant = La variable U définit dans la procédure appelant la fonction Whole As Boolean = True
Cette ligne de code : If Whole Then Who = 1 Else Who = 2 Sert à déterminer si la méthode Find à la ligne suivante doit utiliser la valeur Xlpart ou XlWhole lorsqu'elle recherche la valeur de U dans la colonne 4 La valeur numérique des 2 constantes du paramètre "LookAt" de la méthode Find est : XlPart = 2 XlWhole = 1 En conséquence, selon que le paramètre est à true ou False dans la ligne de code appelant la fonction i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) La méthode Find uilisera LookAt:= XlPart ou LookAt:= XlWhole
Comment déterminer la valeur numérique d'une constante d'un paramêtre de fonction : A ) dans la fenêtre de l'éditeur de code, ouvre l'explorateur d'objet B ) dans la boîte de saisie recherche, tu tapes le paramètre : LookAt C ) dans la fenêtre du bas, à droite, apparaît les 2 valeurs que ce paramêtre peut prende D ) Si tu sélectiones à tour de rôle chacun deux valeurs, tu verras dans le bas de la fenêtre son équivalent numérique.
Bonjour MichDenis
Merci pour cette réponse détaillée et pédagogique.
Je viens de découvrir l'utilité de l'explorateur d'objet.
Il faudrait que je creuse ce sujet.
Bonne journée
| i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True)
'-------------------------
Private Function RowFind&(Sh As Worksheet, ByVal Col%, What As Variant, Whole As Boolean)
Dim W As Range, Who As Byte
If Whole Then Who = 1 Else Who = 2
Set W = Sh.Columns(Col).Find(What, LookAt:=Who)
If W Is Nothing Then RowFind = 0 Else RowFind = W.Row
End Function
'-------------------------
Chaque paramètre de la fonction
Sh As Worksheet = ThisWorkbook.Sheets("69Graph")
ByVal Col% = 4
What As Variant = La variable U définit dans la procédure appelant la fonction
Whole As Boolean = True
Cette ligne de code :
If Whole Then Who = 1 Else Who = 2
Sert à déterminer si la méthode Find à la ligne suivante doit
utiliser la valeur Xlpart ou XlWhole lorsqu'elle recherche
la valeur de U dans la colonne 4
La valeur numérique des 2 constantes du paramètre "LookAt"
de la méthode Find est :
XlPart = 2
XlWhole = 1
En conséquence, selon que le paramètre est à true ou False dans
la ligne de code appelant la fonction
i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True)
La méthode Find uilisera LookAt:= XlPart ou LookAt:= XlWhole
Comment déterminer la valeur numérique d'une constante d'un paramêtre de fonction :
A ) dans la fenêtre de l'éditeur de code,
ouvre l'explorateur d'objet
B ) dans la boîte de saisie recherche, tu tapes le paramètre : LookAt
C ) dans la fenêtre du bas, à droite, apparaît les 2 valeurs que ce paramêtre
peut prende
D ) Si tu sélectiones à tour de rôle chacun deux valeurs, tu verras dans le bas
de la fenêtre son équivalent numérique.
Merci pour cette réponse détaillée et pédagogique. Je viens de découvrir l'utilité de l'explorateur d'objet. Il faudrait que je creuse ce sujet.
Bonne journée
| i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True)
'------------------------- Private Function RowFind&(Sh As Worksheet, ByVal Col%, What As Variant, Whole As Boolean) Dim W As Range, Who As Byte If Whole Then Who = 1 Else Who = 2 Set W = Sh.Columns(Col).Find(What, LookAt:=Who) If W Is Nothing Then RowFind = 0 Else RowFind = W.Row End Function '-------------------------
Chaque paramètre de la fonction Sh As Worksheet = ThisWorkbook.Sheets("69Graph") ByVal Col% = 4 What As Variant = La variable U définit dans la procédure appelant la fonction Whole As Boolean = True
Cette ligne de code : If Whole Then Who = 1 Else Who = 2 Sert à déterminer si la méthode Find à la ligne suivante doit utiliser la valeur Xlpart ou XlWhole lorsqu'elle recherche la valeur de U dans la colonne 4 La valeur numérique des 2 constantes du paramètre "LookAt" de la méthode Find est : XlPart = 2 XlWhole = 1 En conséquence, selon que le paramètre est à true ou False dans la ligne de code appelant la fonction i = RowFind(ThisWorkbook.Sheets("69Graph"), 4, u, True) La méthode Find uilisera LookAt:= XlPart ou LookAt:= XlWhole
Comment déterminer la valeur numérique d'une constante d'un paramêtre de fonction : A ) dans la fenêtre de l'éditeur de code, ouvre l'explorateur d'objet B ) dans la boîte de saisie recherche, tu tapes le paramètre : LookAt C ) dans la fenêtre du bas, à droite, apparaît les 2 valeurs que ce paramêtre peut prende D ) Si tu sélectiones à tour de rôle chacun deux valeurs, tu verras dans le bas de la fenêtre son équivalent numérique.