IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Convertir une string en object [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Convertir une string en object
    Bonjour a tous
    Voici mon probleme, j'ai 30 boutons nommer de Bt_1 à Bt_30 et je desires effacer leur text via.Caption
    L'instruction ActiveSheet.Bt_01.Caption = "" ca marche tres bien.
    mais je desire la reproduire dans une boucle pour eviter d'avoir a repeter 30 fois l'instruction.
    apres avoir lu dans les forums certaine indication j'ai fait ce programme que je documente toujours pour ma gouverne


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub Efface()
    '
    ' Efface
    'Efface les boutons de facon manuel
    'nous avond 30 bouton bt_1 a Bt_30
    'on va faire une boucle avec une incrementation 30 fois
    'compteur va etre la variable qui va etre incrementée a chaque boucle
    '************************************************************
    '
    'definition des variables
    '
    'compteur  est une variable integer
    Dim compteur As Integer
    'lettre est la variable text pour la fin du nom de bouton
    Dim lettre As String
    'nom_du_bouton est une variable text pour le nom du bouton au debut
    Dim nom_du_bouton As String
    Dim nom_du_bouton_complet As String
    'attribution des variables au debut
    nom_du_bouton = "Bt_"
    compteur = 1
    'atribution a la variable string lettre, de la valeur integer compteur
    'on ne peut pas attribuer en temp normal une valeur integer a une variable string
    'la fonction CStr, fait le travail
    'donc en l'etat la variable string "lettre" prend la valeur "1"
    lettre = CStr(compteur)
    'utilisation de la boucle while....wend
    'while verifie que la valeur du compteur soit a 30 et s arrette
    While compteur < 30
    lettre = CStr(compteur)
    nom_du_bouton_complet = nom_du_bouton & lettre
    ActiveSheet.Controls("nom_du_bouton_complet").Caption = ""
    compteur = compteur + 1
    Wend
    Seulement voila, j'ai le message d'erreur 438 proprietée ou méthode non gérée par cet objet.
    La je comprend pas car caption est géré

    Au secoure
    Bon j'ai déjà regarder sur le forum des indications, mais j'ai rien pigé

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i =1 to 30
    ActiveSheet.controls("Bt_" & frormat(i,"00")).Caption = "" 
    Next

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour et un salut à Robert
    Le code écrit par dave1000 est lourd et maladroit et peut être en effet écrit plus simplement, comme le montre Robert.
    Attention, cependant, à la collection d'objets utilisée. S'agissant d'objets sur une feuille de calcul, c'est à la collection Shapes et non Controls, qu'ils appartiennent --->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i =1 to 30
       ActiveSheet.Shapes("Bt_" & format(i,"00")).Caption = "" 
    Next
    C'est CETTE erreur, que dénonçait le message reçu, à savoir :
    Seulement voila, j'ai le message d'erreur 438 proprietée ou méthode non gérée par cet objet.
    "cet objet" ? --->> ActiveSheet
    "propriété ou méthode" ? --->> Controls
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Bonjour Dysorthographie ( )
    Petite faute de frappe : format à la place de frormat.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour Menhir( )
    merci

  6. #6
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Ca marche pas ni avec l'un nis avec l'autre
    Bonjours messieurs

    tout d'abord merci de m'avoir répondue si vite.
    Mais :
    le bouton est un bouton Contrôle active x
    ActiveSheet.Shapes("Bt_" & Format(i, "00")).Caption = "" me fait une erreur de type l'élément portant ce nom est introuvable ( ce qui me fait douter de la classe du bouton).

    et

    ActiveSheet.Controls("Bt_" & Format(i, "00")).Caption = "" me donne pour erreur 438 Propriété ou méthode non gérée par cet objet

    Au secours

  7. #7
    Invité
    Invité(e)
    Par défaut
    et que te dit l'enregistreur de macro?

  8. #8
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut je ne comprend pas votre question
    je ne vois pas ce que vous me demander, je n'utilise pas l'enregistreur de macro a ce stade

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Tu ne réfléchis vraiment pas beaucoup, dave1000
    Tu n'iras pas loin si tu te contentes de copier/coller sans même analyser !
    Le message reçu est pourtant on ne peut plus clair !
    Bon ..-->>
    Le code qui t'a été montré suppose que tes boutons sont nommés "Bt_01", "BT_02", ... "BT_0n"
    s'ils sont nommés "Bt_1", "BT_2", ... "BT_n", le code est à modifier ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Shapes("Bt_" &  i).Caption = ""
    Est-ce vraiment si dur que cela, que d'analyser, comprendre, adapter ?
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  10. #10
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut j'avais deja fait les modif
    j'avais meme renomez les boutons Bt_01 etc, le probleme est ailleur

  11. #11
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Allez -->> réflexe à ta place, puisque tu n'en a pas : --->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for each sh in me.shapes
      msgbox sh.name
    next
    Tes boutons apparaissent-ils dans ces msgbox ? Si oui --->> quel nom est affiché pour chacun d'eux ?
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ActiveSheet.Shapes("CommandButton1").AlternativeText = "titi"

  13. #13
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut message erreur
    l'element portant ce nom est introuvable

  14. #14
    Invité
    Invité(e)
    Par défaut
    c'est pourtant ce que me donne l'enregistreur de macro pour un bouton activex!

  15. #15
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut je suis daccord avec toi
    Je suis d'accord avec toi, mais bon repartons sur la bonne base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim i As Integer
    For i = 1 To 30
         ActiveSheet.Bt_01.Caption = ""
    Next
    ça, ça fonctionne parfaitement ça efface parfaitement et si je change le texte c'est perfect même si ça n’agit que sur le même bouton


    pour umparia, j'ai l'erreur utilisation incorrecte de ME

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    je n'en suis pas sur mais il me semble que la propriété caption des activx"commandbutton" n'est pas accessible en ecriture quand ces controls sont sur un sheets

    @robert
    alternativetext donne rien meme si il n'y a pas d'erreurs déclenchées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MsgBox ActiveSheet.Shapes("Bt_" & 1).AlternativeText
    'le message est vide
    j'ai bien tenté avec la collection OleObjects mais kifkif

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
    For i = 1 To 3
    MsgBox ActiveSheet.OLEObjects("Bt_" & 1).Caption
    Next
    End Sub
    'erreur 438 ne gere pas cette propriété
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  17. #17
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    je n'en suis pas sur mais il me semble que la propriété caption des activx"commandbutton" n'est pas accessible en ecriture quand ces controls sont sur un sheets
    Bien sûr, qu'elle est accessible en lecture et écriture (et heureusement) !
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  18. #18
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bon j'avais tords
    en fait pour le activx c'est comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
        For i = 1 To 3
            ActiveSheet.OLEObjects("Bt_" & i).Object.Caption = "titi" & i
        Next
    End Sub
    voila

    Nom : demo.gif
Affichages : 793
Taille : 117,7 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  19. #19
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    A Patrick
    Les contrôles activex sont également dans la collection Shapes.
    J'ai par ailleurs pu vérifier le bon fonctionnement du code suggéré (utilisant la collection Shapes) -->> aucune faille.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  20. #20
    Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Décembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Services de proximité

    Informations forums :
    Inscription : Décembre 2017
    Messages : 9
    Points : 3
    Points
    3
    Par défaut et si le probleme etait
    est ce qu il faudrait que le resultat de l incrementation de la boucle soit transformé en "object"
    dim test as object

    par exemple
    et la il faut utilisé set, et la je ne sait pas quoi mettre

    car en verité si ca ce trouve ,il ne comprent pas le resultat de notre concatenation Bt_& i qui forme un string

    enfin je supose

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Convertir une string en tableau de caractères
    Par alainpeniche dans le forum C++
    Réponses: 4
    Dernier message: 06/01/2007, 20h00
  2. convertir une string en une fonction
    Par danny_67 dans le forum XML
    Réponses: 2
    Dernier message: 26/08/2005, 13h55
  3. Comment convertir une string en boolean ?
    Par olivier12345600 dans le forum Langage
    Réponses: 6
    Dernier message: 25/06/2005, 15h54
  4. Convertir une string en image
    Par worldchampion57 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 16/05/2005, 09h55
  5. [Firebird] Convertir une String en date
    Par laffreuxthomas dans le forum SQL
    Réponses: 1
    Dernier message: 04/05/2005, 19h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo