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

VBA Word Discussion :

Déclaration de variable dans un objet


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Février 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Déclaration de variable dans un objet
    Bonjour le forum,

    Tout d'abord merci de m'accorder un peu de temps.

    Je débute en VBA et j'ai réussi à grandement avancer sur mon projet avec toutes les aides présentes ici.

    Malheureusement je me casse les dents sur une boucle que je souhaiterai créer afin d'alléger grandement mon code.

    Pour vous faire un petit topo, je travaille sur WORD et j'ai plusieurs textbox dans mon fichier au nom txt_equipement_1 ; txt_equipement_2 ; ...
    Je souhaiterai effectuer une boucle qui me permette de récupérer la valeur de ceux-ci, mais je n'arrive à créer une variable permettant d'incrémenter un + 1 au nom de la textbox.
    Ou du moins une variable qui ne me crée pas une erreur. Créer une boucle ne me posera j'espère pas de problème mais cependant j'ai un problème sur la déclaration de variable ...

    Mon petit bout de code "test" qui fonctionne et me renvoi bien la valeur de la textbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
     
    Dim V_EQUIPEMENT As Object
    Set V_EQUIPEMENT = txt_equipement_1
    MsgBox V_EQUIPEMENT.Value
    Set V_EQUIPEMENT = Nothing
     
    End Sub
    Malheureusement quand je veux insérer une variable au nom de la textbox dans la déclaration de mon objet une erreur d'incompatibilité de type apparait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
     
    Dim V_EQUIPEMENT As Object
    Dim i As Integer
    i = 1
    Set V_EQUIPEMENT = "txt_equipement_" & i
    MsgBox V_EQUIPEMENT.Value
    Set V_EQUIPEMENT = Nothing
     
    End Sub
    J'ai également essayer de déclarer une variable String supplémentaire sans succès (objet requis) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
     
    Dim V_EQUIPEMENT As Object
    Dim i As Integer
    Dim V_NOM_TXTBOX As String
    i = 1
    V_NOM_TXTBOX = "txt_equipement_" & i
    Set V_EQUIPEMENT = V_NOM_TXTBOX
    MsgBox V_EQUIPEMENT.Value
    Set V_EQUIPEMENT = Nothing
     
    End Sub
    Je dois faire une grosse erreur quelques part, un oubli ou mal déclarer mes variables mais je n'arrive pas à mettre le doigt dessus, malgré beaucoup d'essai avec des codes trouvés ici et là.
    Auriez-vous une solution pour me dépanner ou du moins pourriez vous m'aiguiller sur la marche à suivre ?

    Un grand merci d'avance.


    EDIT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Controls(maVariable).Value
    Ne fonctionne pas :/

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 772
    Points : 28 633
    Points
    28 633
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une solution est de parcourir à l'aide d'une boucle For Each In , la collection des contrôles du UserForm et de vérifier si les n caractères de gauche du nom du contrôle sont identiques à ceux que l'on cherche
    Exemple pour chercher le nom des TextBox préfixés txt_equipement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub CommandButton1_Click()
      Const Prefix As String = "txt_equipement"
      Dim oCtrl As Control
      For Each oCtrl In Me.Controls
        With oCtrl
          If Left(.Name, Len(Prefix)) = Prefix Then
             MsgBox .Name
          End If
        End With
      Next
      Set oCtrl = Nothing
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. déclaration des variables dans une fonction
    Par kawther dans le forum Débuter
    Réponses: 4
    Dernier message: 22/10/2008, 01h17
  2. Réponses: 8
    Dernier message: 15/10/2008, 23h43
  3. Réponses: 6
    Dernier message: 06/02/2008, 16h19
  4. Réponses: 8
    Dernier message: 03/11/2006, 15h55
  5. [Optimisation?] Déclaration de variable dans les boucles
    Par romaintaz dans le forum Langage
    Réponses: 5
    Dernier message: 11/08/2006, 16h08

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