Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utilisation de FACEID

12 réponses
Avatar
ALARDET Jacques
Bonjour,

Je me crée des palettes de 100 boutons contenant les images standard

Pour la 1ère palette
Début = 0
For I=1 to 100
MaBarre.Controls(I)=Début+I-1
next

Ensuite je fais varier Début de 0 à 10000. et j'obtiens 10000 images de
boutons... enfin presque, car dans le tas, il y a des images vides

Ma question : Comment puis-je savoir qu'une image est vide, par exemple 3819
est remplie avec un sens interdit, mais 3818 est vide ?

Excel V2003

--
Papyjac

10 réponses

1 2
Avatar
Jacquouille
Bonjour Jacques
Chaque chose a un poids.
Ne pourrais-tu essayer un truc du genre ESTVIDE ou nbcar ou ...NB.Pixel(je
viens de l'inventer)
For each c in zn 'range ("....:.....")
if [c]="" alors ' à adapter
c.interior.colorindex=3
end if
next
Bonne chance

--
Bien amicalmement,
"Le vin est au repas ce que le parfum est à la femme."

Jacquouille.

"ALARDET Jacques" a écrit dans le
message de news:
Bonjour,

Je me crée des palettes de 100 boutons contenant les images standard

Pour la 1ère palette
Début = 0
For I=1 to 100
MaBarre.Controls(I)=Début+I-1
next

Ensuite je fais varier Début de 0 à 10000. et j'obtiens 10000 images de
boutons... enfin presque, car dans le tas, il y a des images vides

Ma question : Comment puis-je savoir qu'une image est vide, par exemple
3819
est remplie avec un sens interdit, mais 3818 est vide ?

Excel V2003

--
Papyjac


Avatar
michdenis
Utilises cette macro et tu trouveras la liste de tous les FaceId
utilisés dans Excel

à partir de la liste obtenue, tu tries la liste sur les la colonne FaceId
tu enlèveras les lignes vides. Par la suite, tu utilises un filtre élaboré
en cochant sans doublons sur la liste des FaceId et tu obtiendras
la liste de tous les faceId dans une colonne avec la commande associée.

Tu peux alors vérifier si le numéro de la faceid que tu veux attribuer
appartient à cette liste ! Ou plus simplement, tu peux attribuer la valeur
d'une cellule de ta plage représentant ta liste de faceId dans ta procédure.

Il y en a je crois autour de 900 différents

'------------------------------
Sub GetFindControlID()
On Error Resume Next
Dim a As CommandBarControls, b As Object
Set a = Application.CommandBars.FindControls
[A1].Resize(, 2).Value = Array("Caption", "FaceID")
For Each b In a
With [A65536].End(xlUp).Offset(1)
.Value = b.Caption
.Offset(, 1).Value = b.FaceId
End With
Next
Set a = Nothing
End Sub
'------------------------------





"ALARDET Jacques" a écrit dans le
message de news:
Bonjour,

Je me crée des palettes de 100 boutons contenant les images standard

Pour la 1ère palette
Début = 0
For I=1 to 100
MaBarre.Controls(I)=Début+I-1
next

Ensuite je fais varier Début de 0 à 10000. et j'obtiens 10000 images de
boutons... enfin presque, car dans le tas, il y a des images vides

Ma question : Comment puis-je savoir qu'une image est vide, par exemple 3819
est remplie avec un sens interdit, mais 3818 est vide ?

Excel V2003

--
Papyjac
Avatar
michdenis
Et si tu ne veux pas utiliser l'interface de la feuille de calcul,
tu peux utiliser ceci :

Tu copies les 2 procédures et tu exécutes "Test"

'----------------------------------
Sub test()
Dim Tblo()
Dim X As Integer
'Extraire les faceId et les placer
'dans une variable tableau (array)
GetFindControlID Tblo

'à partir d'ici, tu tests tous les faceid
'que tu veux, ils sont répertoriés dans le tableau

X = 25 ' un test avec un faceid quelconque

If IsError(Application.Match(X, Tblo, 0)) Then
MsgBox "Ce faceid n'existe pas"
End If

End Sub

'----------------------------------
Sub GetFindControlID(Tblo As Variant)
On Error Resume Next
Dim Coll As New Collection, i As Integer
Dim a As CommandBarControls, b As Object
Set a = Application.CommandBars.FindControls
For Each b In a
Coll.Add b.Caption, Str(b.FaceId)
If Err = 0 Then
ReDim Preserve Tblo(i)
Tblo(i) = b.FaceId
i = i + 1
Else
Err.Clear
End If
Next
Set a = Nothing: Set Coll = Nothing
End Sub
'----------------------------------





"michdenis" a écrit dans le message de news:
%
Utilises cette macro et tu trouveras la liste de tous les FaceId
utilisés dans Excel

à partir de la liste obtenue, tu tries la liste sur les la colonne FaceId
tu enlèveras les lignes vides. Par la suite, tu utilises un filtre élaboré
en cochant sans doublons sur la liste des FaceId et tu obtiendras
la liste de tous les faceId dans une colonne avec la commande associée.

Tu peux alors vérifier si le numéro de la faceid que tu veux attribuer
appartient à cette liste ! Ou plus simplement, tu peux attribuer la valeur
d'une cellule de ta plage représentant ta liste de faceId dans ta procédure.

Il y en a je crois autour de 900 différents

'------------------------------
Sub GetFindControlID()
On Error Resume Next
Dim a As CommandBarControls, b As Object
Set a = Application.CommandBars.FindControls
[A1].Resize(, 2).Value = Array("Caption", "FaceID")
For Each b In a
With [A65536].End(xlUp).Offset(1)
.Value = b.Caption
.Offset(, 1).Value = b.FaceId
End With
Next
Set a = Nothing
End Sub
'------------------------------





"ALARDET Jacques" a écrit dans le
message de news:
Bonjour,

Je me crée des palettes de 100 boutons contenant les images standard

Pour la 1ère palette
Début = 0
For I=1 to 100
MaBarre.Controls(I)=Début+I-1
next

Ensuite je fais varier Début de 0 à 10000. et j'obtiens 10000 images de
boutons... enfin presque, car dans le tas, il y a des images vides

Ma question : Comment puis-je savoir qu'une image est vide, par exemple 3819
est remplie avec un sens interdit, mais 3818 est vide ?

Excel V2003

--
Papyjac
Avatar
Papyjac
Bonjour et merci à Jacquouille et michdenis

Fort de vos tuyaux je m'en vais de ce pas effectuer le test, puis faire la
transposition sous Word et PowerPoint

--
Papyjac


"michdenis" a écrit :

Et si tu ne veux pas utiliser l'interface de la feuille de calcul,
tu peux utiliser ceci :

Tu copies les 2 procédures et tu exécutes "Test"

'----------------------------------
Sub test()
Dim Tblo()
Dim X As Integer
'Extraire les faceId et les placer
'dans une variable tableau (array)
GetFindControlID Tblo

'à partir d'ici, tu tests tous les faceid
'que tu veux, ils sont répertoriés dans le tableau

X = 25 ' un test avec un faceid quelconque

If IsError(Application.Match(X, Tblo, 0)) Then
MsgBox "Ce faceid n'existe pas"
End If

End Sub

'----------------------------------
Sub GetFindControlID(Tblo As Variant)
On Error Resume Next
Dim Coll As New Collection, i As Integer
Dim a As CommandBarControls, b As Object
Set a = Application.CommandBars.FindControls
For Each b In a
Coll.Add b.Caption, Str(b.FaceId)
If Err = 0 Then
ReDim Preserve Tblo(i)
Tblo(i) = b.FaceId
i = i + 1
Else
Err.Clear
End If
Next
Set a = Nothing: Set Coll = Nothing
End Sub
'----------------------------------





"michdenis" a écrit dans le message de news:
%
Utilises cette macro et tu trouveras la liste de tous les FaceId
utilisés dans Excel

à partir de la liste obtenue, tu tries la liste sur les la colonne FaceId
tu enlèveras les lignes vides. Par la suite, tu utilises un filtre élaboré
en cochant sans doublons sur la liste des FaceId et tu obtiendras
la liste de tous les faceId dans une colonne avec la commande associée.

Tu peux alors vérifier si le numéro de la faceid que tu veux attribuer
appartient à cette liste ! Ou plus simplement, tu peux attribuer la valeur
d'une cellule de ta plage représentant ta liste de faceId dans ta procédure.

Il y en a je crois autour de 900 différents

'------------------------------
Sub GetFindControlID()
On Error Resume Next
Dim a As CommandBarControls, b As Object
Set a = Application.CommandBars.FindControls
[A1].Resize(, 2).Value = Array("Caption", "FaceID")
For Each b In a
With [A65536].End(xlUp).Offset(1)
.Value = b.Caption
.Offset(, 1).Value = b.FaceId
End With
Next
Set a = Nothing
End Sub
'------------------------------





"ALARDET Jacques" a écrit dans le
message de news:
Bonjour,

Je me crée des palettes de 100 boutons contenant les images standard

Pour la 1ère palette
Début = 0
For I=1 to 100
MaBarre.Controls(I)=Début+I-1
next

Ensuite je fais varier Début de 0 à 10000. et j'obtiens 10000 images de
boutons... enfin presque, car dans le tas, il y a des images vides

Ma question : Comment puis-je savoir qu'une image est vide, par exemple 3819
est remplie avec un sens interdit, mais 3818 est vide ?

Excel V2003

--
Papyjac




Avatar
Papyjac
Bonjour Michdenis

Oui, je trouve bien 1084 images dont 899 sont standards et 185 sont à moi

Effectivement FINCONTROLS donne les boutons et par extension leur image

Mais avec mon exploration initiale des FACEID j'obtenais plusieurs milliers
d'images, disons 6000 images environ :
1. Je pense qu'il s'agit des toutes les images (Word, Excel et PowerPoint,
MSProject, Access ? Outilook ?)
2. Il s'agit pas forcément de bouton de barres d'outils
3. Ce peut être plusieurs fois le même bouton dans des états différents

Qu'en penses tu

--
Papyjac


"michdenis" a écrit :

Et si tu ne veux pas utiliser l'interface de la feuille de calcul,
tu peux utiliser ceci :

Tu copies les 2 procédures et tu exécutes "Test"

'----------------------------------
Sub test()
Dim Tblo()
Dim X As Integer
'Extraire les faceId et les placer
'dans une variable tableau (array)
GetFindControlID Tblo

'à partir d'ici, tu tests tous les faceid
'que tu veux, ils sont répertoriés dans le tableau

X = 25 ' un test avec un faceid quelconque

If IsError(Application.Match(X, Tblo, 0)) Then
MsgBox "Ce faceid n'existe pas"
End If

End Sub

'----------------------------------
Sub GetFindControlID(Tblo As Variant)
On Error Resume Next
Dim Coll As New Collection, i As Integer
Dim a As CommandBarControls, b As Object
Set a = Application.CommandBars.FindControls
For Each b In a
Coll.Add b.Caption, Str(b.FaceId)
If Err = 0 Then
ReDim Preserve Tblo(i)
Tblo(i) = b.FaceId
i = i + 1
Else
Err.Clear
End If
Next
Set a = Nothing: Set Coll = Nothing
End Sub
'----------------------------------





"michdenis" a écrit dans le message de news:
%
Utilises cette macro et tu trouveras la liste de tous les FaceId
utilisés dans Excel

à partir de la liste obtenue, tu tries la liste sur les la colonne FaceId
tu enlèveras les lignes vides. Par la suite, tu utilises un filtre élaboré
en cochant sans doublons sur la liste des FaceId et tu obtiendras
la liste de tous les faceId dans une colonne avec la commande associée.

Tu peux alors vérifier si le numéro de la faceid que tu veux attribuer
appartient à cette liste ! Ou plus simplement, tu peux attribuer la valeur
d'une cellule de ta plage représentant ta liste de faceId dans ta procédure.

Il y en a je crois autour de 900 différents

'------------------------------
Sub GetFindControlID()
On Error Resume Next
Dim a As CommandBarControls, b As Object
Set a = Application.CommandBars.FindControls
[A1].Resize(, 2).Value = Array("Caption", "FaceID")
For Each b In a
With [A65536].End(xlUp).Offset(1)
.Value = b.Caption
.Offset(, 1).Value = b.FaceId
End With
Next
Set a = Nothing
End Sub
'------------------------------





"ALARDET Jacques" a écrit dans le
message de news:
Bonjour,

Je me crée des palettes de 100 boutons contenant les images standard

Pour la 1ère palette
Début = 0
For I=1 to 100
MaBarre.Controls(I)=Début+I-1
next

Ensuite je fais varier Début de 0 à 10000. et j'obtiens 10000 images de
boutons... enfin presque, car dans le tas, il y a des images vides

Ma question : Comment puis-je savoir qu'une image est vide, par exemple 3819
est remplie avec un sens interdit, mais 3818 est vide ?

Excel V2003

--
Papyjac




Avatar
Mgr T. Banni
et la proc que vous a proposée chris V (que ce fil me permet de saluer au
passage) , vous l'avez essayée au moins, papyjac?
allez ouste, au boulot, mon fils
Mgr T.B.

"Papyjac" a écrit dans le message de
news:
Bonjour Michdenis

Oui, je trouve bien 1084 images dont 899 sont standards et 185 sont à moi

Effectivement FINCONTROLS donne les boutons et par extension leur image

Mais avec mon exploration initiale des FACEID j'obtenais plusieurs
milliers
d'images, disons 6000 images environ :
1. Je pense qu'il s'agit des toutes les images (Word, Excel et PowerPoint,
MSProject, Access ? Outilook ?)
2. Il s'agit pas forcément de bouton de barres d'outils
3. Ce peut être plusieurs fois le même bouton dans des états différents

Qu'en penses tu

--
Papyjac


"michdenis" a écrit :

Et si tu ne veux pas utiliser l'interface de la feuille de calcul,
tu peux utiliser ceci :

Tu copies les 2 procédures et tu exécutes "Test"

'----------------------------------
Sub test()
Dim Tblo()
Dim X As Integer
'Extraire les faceId et les placer
'dans une variable tableau (array)
GetFindControlID Tblo

'à partir d'ici, tu tests tous les faceid
'que tu veux, ils sont répertoriés dans le tableau

X = 25 ' un test avec un faceid quelconque

If IsError(Application.Match(X, Tblo, 0)) Then
MsgBox "Ce faceid n'existe pas"
End If

End Sub

'----------------------------------
Sub GetFindControlID(Tblo As Variant)
On Error Resume Next
Dim Coll As New Collection, i As Integer
Dim a As CommandBarControls, b As Object
Set a = Application.CommandBars.FindControls
For Each b In a
Coll.Add b.Caption, Str(b.FaceId)
If Err = 0 Then
ReDim Preserve Tblo(i)
Tblo(i) = b.FaceId
i = i + 1
Else
Err.Clear
End If
Next
Set a = Nothing: Set Coll = Nothing
End Sub
'----------------------------------





"michdenis" a écrit dans le message de news:
%
Utilises cette macro et tu trouveras la liste de tous les FaceId
utilisés dans Excel

à partir de la liste obtenue, tu tries la liste sur les la colonne FaceId
tu enlèveras les lignes vides. Par la suite, tu utilises un filtre
élaboré
en cochant sans doublons sur la liste des FaceId et tu obtiendras
la liste de tous les faceId dans une colonne avec la commande associée.

Tu peux alors vérifier si le numéro de la faceid que tu veux attribuer
appartient à cette liste ! Ou plus simplement, tu peux attribuer la
valeur
d'une cellule de ta plage représentant ta liste de faceId dans ta
procédure.

Il y en a je crois autour de 900 différents

'------------------------------
Sub GetFindControlID()
On Error Resume Next
Dim a As CommandBarControls, b As Object
Set a = Application.CommandBars.FindControls
[A1].Resize(, 2).Value = Array("Caption", "FaceID")
For Each b In a
With [A65536].End(xlUp).Offset(1)
.Value = b.Caption
.Offset(, 1).Value = b.FaceId
End With
Next
Set a = Nothing
End Sub
'------------------------------





"ALARDET Jacques" a écrit dans
le
message de news:
Bonjour,

Je me crée des palettes de 100 boutons contenant les images standard

Pour la 1ère palette
Début = 0
For I=1 to 100
MaBarre.Controls(I)=Début+I-1
next

Ensuite je fais varier Début de 0 à 10000. et j'obtiens 10000 images de
boutons... enfin presque, car dans le tas, il y a des images vides

Ma question : Comment puis-je savoir qu'une image est vide, par exemple
3819
est remplie avec un sens interdit, mais 3818 est vide ?

Excel V2003

--
Papyjac






Avatar
Papyjac
Bonjour Monseigneur,

Sauf votre respect monseigneur, je n'ai pas vu de proc de Chris V dans ce
fil, ou alors c'est le seveur qui me joue des tours

Mais pour te rassurer, j'ai testé, car je teste tout toujours et 2 fois, et
ensuite je recommence

Alors j'ai quand même progressé puisque je sais que sur mes 10000 images
possible j'en ai trouvé 3834 de remplies
Je pense qu'on peut farfouiller après 10000 !

Je salue aussi Chris V comme toi
--
Papyjac


"Mgr T. Banni" a écrit :

et la proc que vous a proposée chris V (que ce fil me permet de saluer au
passage) , vous l'avez essayée au moins, papyjac?
allez ouste, au boulot, mon fils
Mgr T.B.

"Papyjac" a écrit dans le message de
news:
> Bonjour Michdenis
>
> Oui, je trouve bien 1084 images dont 899 sont standards et 185 sont à moi
>
> Effectivement FINCONTROLS donne les boutons et par extension leur image
>
> Mais avec mon exploration initiale des FACEID j'obtenais plusieurs
> milliers
> d'images, disons 6000 images environ :
> 1. Je pense qu'il s'agit des toutes les images (Word, Excel et PowerPoint,
> MSProject, Access ? Outilook ?)
> 2. Il s'agit pas forcément de bouton de barres d'outils
> 3. Ce peut être plusieurs fois le même bouton dans des états différents
>
> Qu'en penses tu
>
> --
> Papyjac
>
>
> "michdenis" a écrit :
>
>> Et si tu ne veux pas utiliser l'interface de la feuille de calcul,
>> tu peux utiliser ceci :
>>
>> Tu copies les 2 procédures et tu exécutes "Test"
>>
>> '----------------------------------
>> Sub test()
>> Dim Tblo()
>> Dim X As Integer
>> 'Extraire les faceId et les placer
>> 'dans une variable tableau (array)
>> GetFindControlID Tblo
>>
>> 'à partir d'ici, tu tests tous les faceid
>> 'que tu veux, ils sont répertoriés dans le tableau
>>
>> X = 25 ' un test avec un faceid quelconque
>>
>> If IsError(Application.Match(X, Tblo, 0)) Then
>> MsgBox "Ce faceid n'existe pas"
>> End If
>>
>> End Sub
>>
>> '----------------------------------
>> Sub GetFindControlID(Tblo As Variant)
>> On Error Resume Next
>> Dim Coll As New Collection, i As Integer
>> Dim a As CommandBarControls, b As Object
>> Set a = Application.CommandBars.FindControls
>> For Each b In a
>> Coll.Add b.Caption, Str(b.FaceId)
>> If Err = 0 Then
>> ReDim Preserve Tblo(i)
>> Tblo(i) = b.FaceId
>> i = i + 1
>> Else
>> Err.Clear
>> End If
>> Next
>> Set a = Nothing: Set Coll = Nothing
>> End Sub
>> '----------------------------------
>>
>>
>>
>>
>>
>> "michdenis" a écrit dans le message de news:
>> %
>> Utilises cette macro et tu trouveras la liste de tous les FaceId
>> utilisés dans Excel
>>
>> à partir de la liste obtenue, tu tries la liste sur les la colonne FaceId
>> tu enlèveras les lignes vides. Par la suite, tu utilises un filtre
>> élaboré
>> en cochant sans doublons sur la liste des FaceId et tu obtiendras
>> la liste de tous les faceId dans une colonne avec la commande associée.
>>
>> Tu peux alors vérifier si le numéro de la faceid que tu veux attribuer
>> appartient à cette liste ! Ou plus simplement, tu peux attribuer la
>> valeur
>> d'une cellule de ta plage représentant ta liste de faceId dans ta
>> procédure.
>>
>> Il y en a je crois autour de 900 différents
>>
>> '------------------------------
>> Sub GetFindControlID()
>> On Error Resume Next
>> Dim a As CommandBarControls, b As Object
>> Set a = Application.CommandBars.FindControls
>> [A1].Resize(, 2).Value = Array("Caption", "FaceID")
>> For Each b In a
>> With [A65536].End(xlUp).Offset(1)
>> .Value = b.Caption
>> .Offset(, 1).Value = b.FaceId
>> End With
>> Next
>> Set a = Nothing
>> End Sub
>> '------------------------------
>>
>>
>>
>>
>>
>> "ALARDET Jacques" a écrit dans
>> le
>> message de news:
>> Bonjour,
>>
>> Je me crée des palettes de 100 boutons contenant les images standard
>>
>> Pour la 1ère palette
>> Début = 0
>> For I=1 to 100
>> MaBarre.Controls(I)=Début+I-1
>> next
>>
>> Ensuite je fais varier Début de 0 à 10000. et j'obtiens 10000 images de
>> boutons... enfin presque, car dans le tas, il y a des images vides
>>
>> Ma question : Comment puis-je savoir qu'une image est vide, par exemple
>> 3819
>> est remplie avec un sens interdit, mais 3818 est vide ?
>>
>> Excel V2003
>>
>> --
>> Papyjac
>>
>>





Avatar
Mgr Banni
au temps pour les crosses (papales, bien évidemment), mon fils, serveur et
sauveur n'étant pas synagogue
la voici, celle de chris V mais achtung! elle prend son temps avant de
s'afficher
Mgr T.B.


Sub listeFacesID()

Dim i As Integer, j As Integer, k As Integer

Dim cbCtl As CommandBarControl, cbBar As CommandBar

On Error Resume Next

Application.ScreenUpdating = False

Set cbBar = CommandBars.Add(Position:=msoBarFloating, _

MenuBar:úlse, temporary:=True)

Set cbCtl = cbBar.Controls.Add(Type:=msoControlButton, _

temporary:=True)

k = 1

Do

For j = 1 To 10

i = i + 1

Application.StatusBar = "FaceID=" & CStr(i)

cbCtl.FaceId = i

cbCtl.CopyFace

If Err.Number <> 0 Then Exit For

ActiveSheet.Paste Cells(k, j + 1)

Cells(k, j).Value = i

Next j

k = k + 1

Loop While Err.Number = 0

Application.StatusBar = False

cbBar.Delete

Set cbBar = Nothing

Set cbCtl = Nothing

End Sub

"Papyjac" a écrit dans le message de
news:
Bonjour Monseigneur,

Sauf votre respect monseigneur, je n'ai pas vu de proc de Chris V dans ce
fil, ou alors c'est le seveur qui me joue des tours

Mais pour te rassurer, j'ai testé, car je teste tout toujours et 2 fois,
et
ensuite je recommence

Alors j'ai quand même progressé puisque je sais que sur mes 10000 images
possible j'en ai trouvé 3834 de remplies
Je pense qu'on peut farfouiller après 10000 !

Je salue aussi Chris V comme toi
--
Papyjac


"Mgr T. Banni" a écrit :

et la proc que vous a proposée chris V (que ce fil me permet de saluer au
passage) , vous l'avez essayée au moins, papyjac?
allez ouste, au boulot, mon fils
Mgr T.B.

"Papyjac" a écrit dans le message de
news:
> Bonjour Michdenis
>
> Oui, je trouve bien 1084 images dont 899 sont standards et 185 sont à
> moi
>
> Effectivement FINCONTROLS donne les boutons et par extension leur image
>
> Mais avec mon exploration initiale des FACEID j'obtenais plusieurs
> milliers
> d'images, disons 6000 images environ :
> 1. Je pense qu'il s'agit des toutes les images (Word, Excel et
> PowerPoint,
> MSProject, Access ? Outilook ?)
> 2. Il s'agit pas forcément de bouton de barres d'outils
> 3. Ce peut être plusieurs fois le même bouton dans des états différents
>
> Qu'en penses tu
>
> --
> Papyjac
>
>
> "michdenis" a écrit :
>
>> Et si tu ne veux pas utiliser l'interface de la feuille de calcul,
>> tu peux utiliser ceci :
>>
>> Tu copies les 2 procédures et tu exécutes "Test"
>>
>> '----------------------------------
>> Sub test()
>> Dim Tblo()
>> Dim X As Integer
>> 'Extraire les faceId et les placer
>> 'dans une variable tableau (array)
>> GetFindControlID Tblo
>>
>> 'à partir d'ici, tu tests tous les faceid
>> 'que tu veux, ils sont répertoriés dans le tableau
>>
>> X = 25 ' un test avec un faceid quelconque
>>
>> If IsError(Application.Match(X, Tblo, 0)) Then
>> MsgBox "Ce faceid n'existe pas"
>> End If
>>
>> End Sub
>>
>> '----------------------------------
>> Sub GetFindControlID(Tblo As Variant)
>> On Error Resume Next
>> Dim Coll As New Collection, i As Integer
>> Dim a As CommandBarControls, b As Object
>> Set a = Application.CommandBars.FindControls
>> For Each b In a
>> Coll.Add b.Caption, Str(b.FaceId)
>> If Err = 0 Then
>> ReDim Preserve Tblo(i)
>> Tblo(i) = b.FaceId
>> i = i + 1
>> Else
>> Err.Clear
>> End If
>> Next
>> Set a = Nothing: Set Coll = Nothing
>> End Sub
>> '----------------------------------
>>
>>
>>
>>
>>
>> "michdenis" a écrit dans le message de news:
>> %
>> Utilises cette macro et tu trouveras la liste de tous les FaceId
>> utilisés dans Excel
>>
>> à partir de la liste obtenue, tu tries la liste sur les la colonne
>> FaceId
>> tu enlèveras les lignes vides. Par la suite, tu utilises un filtre
>> élaboré
>> en cochant sans doublons sur la liste des FaceId et tu obtiendras
>> la liste de tous les faceId dans une colonne avec la commande
>> associée.
>>
>> Tu peux alors vérifier si le numéro de la faceid que tu veux attribuer
>> appartient à cette liste ! Ou plus simplement, tu peux attribuer la
>> valeur
>> d'une cellule de ta plage représentant ta liste de faceId dans ta
>> procédure.
>>
>> Il y en a je crois autour de 900 différents
>>
>> '------------------------------
>> Sub GetFindControlID()
>> On Error Resume Next
>> Dim a As CommandBarControls, b As Object
>> Set a = Application.CommandBars.FindControls
>> [A1].Resize(, 2).Value = Array("Caption", "FaceID")
>> For Each b In a
>> With [A65536].End(xlUp).Offset(1)
>> .Value = b.Caption
>> .Offset(, 1).Value = b.FaceId
>> End With
>> Next
>> Set a = Nothing
>> End Sub
>> '------------------------------
>>
>>
>>
>>
>>
>> "ALARDET Jacques" a écrit
>> dans
>> le
>> message de news:
>> Bonjour,
>>
>> Je me crée des palettes de 100 boutons contenant les images standard
>>
>> Pour la 1ère palette
>> Début = 0
>> For I=1 to 100
>> MaBarre.Controls(I)=Début+I-1
>> next
>>
>> Ensuite je fais varier Début de 0 à 10000. et j'obtiens 10000 images
>> de
>> boutons... enfin presque, car dans le tas, il y a des images vides
>>
>> Ma question : Comment puis-je savoir qu'une image est vide, par
>> exemple
>> 3819
>> est remplie avec un sens interdit, mais 3818 est vide ?
>>
>> Excel V2003
>>
>> --
>> Papyjac
>>
>>







Avatar
michdenis
Va voir làl, tu auras un début d'aide pour faire ce que tu veux.

Exemple : Télécharger le fichier pour excel.
Lorsqu'excel est fermé le le fichier de Macro complémentaire..
et tu apercevras le BrowserId et tous les icônes de l'application Excel.

http://skp.mvps.org/faceid.htm




"Papyjac" a écrit dans le message de
news:
Bonjour Michdenis

Oui, je trouve bien 1084 images dont 899 sont standards et 185 sont à moi

Effectivement FINCONTROLS donne les boutons et par extension leur image

Mais avec mon exploration initiale des FACEID j'obtenais plusieurs milliers
d'images, disons 6000 images environ :
1. Je pense qu'il s'agit des toutes les images (Word, Excel et PowerPoint,
MSProject, Access ? Outilook ?)
2. Il s'agit pas forcément de bouton de barres d'outils
3. Ce peut être plusieurs fois le même bouton dans des états différents

Qu'en penses tu

--
Papyjac


"michdenis" a écrit :

Et si tu ne veux pas utiliser l'interface de la feuille de calcul,
tu peux utiliser ceci :

Tu copies les 2 procédures et tu exécutes "Test"

'----------------------------------
Sub test()
Dim Tblo()
Dim X As Integer
'Extraire les faceId et les placer
'dans une variable tableau (array)
GetFindControlID Tblo

'à partir d'ici, tu tests tous les faceid
'que tu veux, ils sont répertoriés dans le tableau

X = 25 ' un test avec un faceid quelconque

If IsError(Application.Match(X, Tblo, 0)) Then
MsgBox "Ce faceid n'existe pas"
End If

End Sub

'----------------------------------
Sub GetFindControlID(Tblo As Variant)
On Error Resume Next
Dim Coll As New Collection, i As Integer
Dim a As CommandBarControls, b As Object
Set a = Application.CommandBars.FindControls
For Each b In a
Coll.Add b.Caption, Str(b.FaceId)
If Err = 0 Then
ReDim Preserve Tblo(i)
Tblo(i) = b.FaceId
i = i + 1
Else
Err.Clear
End If
Next
Set a = Nothing: Set Coll = Nothing
End Sub
'----------------------------------





"michdenis" a écrit dans le message de news:
%
Utilises cette macro et tu trouveras la liste de tous les FaceId
utilisés dans Excel

à partir de la liste obtenue, tu tries la liste sur les la colonne FaceId
tu enlèveras les lignes vides. Par la suite, tu utilises un filtre élaboré
en cochant sans doublons sur la liste des FaceId et tu obtiendras
la liste de tous les faceId dans une colonne avec la commande associée.

Tu peux alors vérifier si le numéro de la faceid que tu veux attribuer
appartient à cette liste ! Ou plus simplement, tu peux attribuer la valeur
d'une cellule de ta plage représentant ta liste de faceId dans ta
procédure.

Il y en a je crois autour de 900 différents

'------------------------------
Sub GetFindControlID()
On Error Resume Next
Dim a As CommandBarControls, b As Object
Set a = Application.CommandBars.FindControls
[A1].Resize(, 2).Value = Array("Caption", "FaceID")
For Each b In a
With [A65536].End(xlUp).Offset(1)
.Value = b.Caption
.Offset(, 1).Value = b.FaceId
End With
Next
Set a = Nothing
End Sub
'------------------------------





"ALARDET Jacques" a écrit dans
le
message de news:
Bonjour,

Je me crée des palettes de 100 boutons contenant les images standard

Pour la 1ère palette
Début = 0
For I=1 to 100
MaBarre.Controls(I)=Début+I-1
next

Ensuite je fais varier Début de 0 à 10000. et j'obtiens 10000 images de
boutons... enfin presque, car dans le tas, il y a des images vides

Ma question : Comment puis-je savoir qu'une image est vide, par exemple
3819
est remplie avec un sens interdit, mais 3818 est vide ?

Excel V2003

--
Papyjac




Avatar
michdenis
J'ai oublié de mentionner que tu vas retrouver le FaceId Browser dans
le menu Affichage / Barre d'outils / FaceId Browser.

Et pour t'en servir directement à partir de la feuille de calcul,
tu débutes par afficher le faceid browser et tu appelles par la
suite la fenêtre Personnaliser... de cette manière tu peux modifier
l'icône de la barre d'outils de ton choix par un des icônes du
faceid browser....





"michdenis" a écrit dans le message de news:

Va voir làl, tu auras un début d'aide pour faire ce que tu veux.

Exemple : Télécharger le fichier pour excel.
Lorsqu'excel est fermé le le fichier de Macro complémentaire..
et tu apercevras le BrowserId et tous les icônes de l'application Excel.

http://skp.mvps.org/faceid.htm




"Papyjac" a écrit dans le message de
news:
Bonjour Michdenis

Oui, je trouve bien 1084 images dont 899 sont standards et 185 sont à moi

Effectivement FINCONTROLS donne les boutons et par extension leur image

Mais avec mon exploration initiale des FACEID j'obtenais plusieurs milliers
d'images, disons 6000 images environ :
1. Je pense qu'il s'agit des toutes les images (Word, Excel et PowerPoint,
MSProject, Access ? Outilook ?)
2. Il s'agit pas forcément de bouton de barres d'outils
3. Ce peut être plusieurs fois le même bouton dans des états différents

Qu'en penses tu

--
Papyjac


"michdenis" a écrit :

Et si tu ne veux pas utiliser l'interface de la feuille de calcul,
tu peux utiliser ceci :

Tu copies les 2 procédures et tu exécutes "Test"

'----------------------------------
Sub test()
Dim Tblo()
Dim X As Integer
'Extraire les faceId et les placer
'dans une variable tableau (array)
GetFindControlID Tblo

'à partir d'ici, tu tests tous les faceid
'que tu veux, ils sont répertoriés dans le tableau

X = 25 ' un test avec un faceid quelconque

If IsError(Application.Match(X, Tblo, 0)) Then
MsgBox "Ce faceid n'existe pas"
End If

End Sub

'----------------------------------
Sub GetFindControlID(Tblo As Variant)
On Error Resume Next
Dim Coll As New Collection, i As Integer
Dim a As CommandBarControls, b As Object
Set a = Application.CommandBars.FindControls
For Each b In a
Coll.Add b.Caption, Str(b.FaceId)
If Err = 0 Then
ReDim Preserve Tblo(i)
Tblo(i) = b.FaceId
i = i + 1
Else
Err.Clear
End If
Next
Set a = Nothing: Set Coll = Nothing
End Sub
'----------------------------------





"michdenis" a écrit dans le message de news:
%
Utilises cette macro et tu trouveras la liste de tous les FaceId
utilisés dans Excel

à partir de la liste obtenue, tu tries la liste sur les la colonne FaceId
tu enlèveras les lignes vides. Par la suite, tu utilises un filtre élaboré
en cochant sans doublons sur la liste des FaceId et tu obtiendras
la liste de tous les faceId dans une colonne avec la commande associée.

Tu peux alors vérifier si le numéro de la faceid que tu veux attribuer
appartient à cette liste ! Ou plus simplement, tu peux attribuer la valeur
d'une cellule de ta plage représentant ta liste de faceId dans ta
procédure.

Il y en a je crois autour de 900 différents

'------------------------------
Sub GetFindControlID()
On Error Resume Next
Dim a As CommandBarControls, b As Object
Set a = Application.CommandBars.FindControls
[A1].Resize(, 2).Value = Array("Caption", "FaceID")
For Each b In a
With [A65536].End(xlUp).Offset(1)
.Value = b.Caption
.Offset(, 1).Value = b.FaceId
End With
Next
Set a = Nothing
End Sub
'------------------------------





"ALARDET Jacques" a écrit dans
le
message de news:
Bonjour,

Je me crée des palettes de 100 boutons contenant les images standard

Pour la 1ère palette
Début = 0
For I=1 to 100
MaBarre.Controls(I)=Début+I-1
next

Ensuite je fais varier Début de 0 à 10000. et j'obtiens 10000 images de
boutons... enfin presque, car dans le tas, il y a des images vides

Ma question : Comment puis-je savoir qu'une image est vide, par exemple
3819
est remplie avec un sens interdit, mais 3818 est vide ?

Excel V2003

--
Papyjac




1 2