compter les ojets de la feuille active

lesarthois

XLDnaute Junior
bonsoir le forum

je cherche code pour compter les objets ( combobox; listbox ...) dans une feuille active et en faire une liste voir si possible que la liste soit mise a jour automatiquement a la création d'un nouvel objet mais je bloque :(
je suis parti de ceci
Sub ComptOb()

Sheets.Add
For I = 1 To ActiveSheet.Objects.Count
Cells(I, 1) = Objects(I).Name
Cells(I, 2) = Objects(I).NameLocal
Cells(I, 3) = Objects(I).Index
Next
Columns("A:B").AutoFit
End Sub

mais BUG
merci a vous de bien vouloir me diriger vers une solution
 

MichelXld

XLDnaute Barbatruc
Re : compter les ojets de la feuille active

bonjour


tu peux tester cette procédure pour lister les objets de la boite à outils Controles, contenus dans la Feuil1

Code:
Sub listeObjet_Boite_A_Outils_Controles()
    Dim Ws As Worksheet
    Dim Obj As OLEObject
 
    'crée une nouvelle feuille
    Set Ws = Sheets.Add
 
    'boucle sur les objets de la Feuil1
    For Each Obj In Feuil1.OLEObjects
        Ws.Cells(Obj.Index, 1) = Obj.Name
        Ws.Cells(Obj.Index, 2) = Obj.Index
        Ws.Cells(Obj.Index, 3) = TypeName(Obj.Object)
 
    Next
 
    Ws.Columns("A:C").AutoFit
End Sub


bonne journée
MichelXld
 
Dernière édition:

MichelXld

XLDnaute Barbatruc
Re : compter les ojets de la feuille active

rebonjour

que veux tu dire par "toujour pas de resultat"

tu as un message d'erreur? si oui lequel ?


as tu adapté le nom de la feuille dans la macro?

Code:
For Each Obj In Feuil1.OLEObjects



Il s'agit d'objets de la boites à outils Controles ou formulaires ?



bonne journée
MichelXld
 
Dernière édition:

JeanMarie

XLDnaute Barbatruc
Re : compter les ojets de la feuille active (un coucou particulier à CELEDA)

Bonjour

Nous nous sommes demandés à quoi pouvait bien servir, quel intêret à connaître le Nb d'objets d'une feuille, si tu pouvais nous répondre. Merci ?

Voir le fichier, avant de lire la suite.

Pas de macro, il n'y a pas de recalcul automatique possible sans faire paser par le VBA.

Dans le fichier, Deux noms définis (Voir la boîte de dialogue Insertion/Nom/Définir. Avec deux formules qui utilises des fonctions des macros XL4.

Lire.document(42) retourne une plage horizontale des objets se trouvant soit dans la feuille où est utilisée la formule, ou dans la feuille déclaré (comme dans le fichier).

Lire.objet retourne des infos sur l'objet spécifié.

J'ai placé dans le fichier l'aide de microsoft concernant ces deux fonctions.

Le fichier n'est qu'un sujet pour le fun, et pour dire que je remercie à notre amie Celeda de sa découverte (gros bisous), je te l'avais dit que cela allait être utile un jour ou l'autre.

Encore un petit truc, pour connaître le nombre total d'objet, il suffit de mettre =COLONNES(Objet).

PS: Après avoir rajouter un objet, il suffit de revalider une formule de la colonne B.

@+Jean-Marie
 

Pièces jointes

  • TypeObjet.zip
    25.7 KB · Affichages: 122
Dernière édition:

lesarthois

XLDnaute Junior
Re : compter les ojets de la feuille active

Bonjour Michel et jean marie

Pour répondre a Michel : je n'est aucun résultat qui s'affiche ni de messages d'erreurs.
Pour répondre a jean marie :

Je cherche à avoir la liste des objets d'une feuille, et par la suite du classeur,
que cette liste soit mise a jour a chaque création d'un objet pour la raison suivante :

Je commence à créer un classeur de gestion pour l’association dont je suis vice président,
Cette association a pour but de sauvegarder et entretenir les chemins communaux,
chaque membre a ses tâches bien définies et un calendrier précis.

Ce que je souhaite, ces de n’avoir qu’un USERFORM au démarrage du fichier et que par mot de passe l’utilisateur ne puisse accéder qu’aux ( listebox , boutons de commandes…et feuilles ) correspondant à ces responsabilités ou qu’il auras créés.

Voilà les grosses lignes du projet
( que un USER, pour onze membres actifs et pour huit tâches la liste servira au suivi du fichier et a sa correction le cas où
, )
merci encor pour votre aide
@+
 

MichelXld

XLDnaute Barbatruc
Re : compter les ojets de la feuille active

bonjour chers Hervé et Jean-Marie

merci pour cette tres belle démo Jean-Marie


...je vais continuer avec mes modestes macros ...

Lesarthois, tu n'as pas répondu à ma derniere question : en attendand tu peux tester ces 2 procedures :

Code:
Sub testFormulaire()
Dim Sh As Shape
Dim i As Integer
Dim Ws As Worksheet, Wact As Worksheet
 
Set Wact = ActiveSheet
Set Ws = Sheets.Add
 
For Each Sh In Wact.Shapes
    If Sh.Type = msoFormControl Then
        i = i + 1
        Ws.Cells(i, 1) = Sh.Name
    End If
Next Sh
End Sub


Code:
Sub listeObjet_Boite_A_Outils_Controles()
    Dim Ws As Worksheet, Wact As Worksheet
    Dim Obj As OLEObject
 
    Set Wact = ActiveSheet
    'crée une nouvelle feuille
    Set Ws = Sheets.Add
 
    'boucle sur les objets de la Feuil1
    For Each Obj In Wact.OLEObjects
        Ws.Cells(Obj.Index, 1) = Obj.Name
        Ws.Cells(Obj.Index, 2) = Obj.Index
        Ws.Cells(Obj.Index, 3) = TypeName(Obj.Object)
 
    Next
 
    Ws.Columns("A:C").AutoFit
End Sub


bon apres midi
MichelXld
 

lesarthois

XLDnaute Junior
Re : compter les ojets de la feuille active

bonsoir
merci , le second code fonctione bien il me manquerais seulement les " caption " des commandbuttons ( jaimais satisfait):rolleyes:
encore merci pour vos efforts et votre aide
ps : je t'avais repondu :confused:
@+
 

MichelXld

XLDnaute Barbatruc
Re : compter les ojets de la feuille active

bonjour


tu peux tester cette adaptation

Code:
Sub listeObjet_Boite_A_Outils_Controles_V02()
    Dim Ws As Worksheet, Wact As Worksheet
    Dim Obj As OLEObject
 
    Set Wact = ActiveSheet
    'crée une nouvelle feuille
    Set Ws = Sheets.Add
 
    'boucle sur les objets de la Feuil1
    For Each Obj In Wact.OLEObjects
        Ws.Cells(Obj.Index, 1) = Obj.Name
        Ws.Cells(Obj.Index, 2) = Obj.Index
        Ws.Cells(Obj.Index, 3) = TypeName(Obj.Object)
 
        'Verifie s'il s'agit d'un CommandButton
        If TypeName(Obj.Object) = "CommandButton" Then _
            Ws.Cells(Obj.Index, 4) = Obj.Object.Caption
    Next
 
    Ws.Columns("A:C").AutoFit
End Sub


bonne journée
MichelXld
 

Discussions similaires

Réponses
8
Affichages
691

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 520
Messages
2 089 298
Membres
104 092
dernier inscrit
karbone57