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 :

Variable string et boucle for [WD-2007]


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Variable string et boucle for
    Bonjour à tous,

    Je suis entrain de développer un petit programme sous word 2007 et j'aurais besoin de vos conseils sur un point où je bloque.

    J'ai défini deux variable (hérakles1, hérakles2, as String). Je leur affecte une chaine de caractère
    Je fais tourner une boucle. Mon if vérifie si mes checkbox nommé doublage sont cochées ou pas.
    Si ma checkbox nommée Doublage1 est cochée, je souhaiterais qu'à la fin de mon word apparaisse "le texte est description UNO"

    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
     
    Private Sub valider3_Click()
     
    hérakles1 = "déscription UNO"
    hérakles2 = "décription Dos"
     
        For dp = 1 To 6
            If Me.Controls("doublage" & dp).Value = True Then
            compteur = compteur + 1
            Selection.EndKey Unit:=wdStory, Extend:=wdMove
            Selection.InsertAfter "le texte est" & Me.Controls("hérakles" & dp).Label
            Selection.Collapse direction:=wdCollapseEnd
     
            End If
    Next dp
    Ce code ne fonctionne pas, essentiellement car je ne sais pas trop ce que je dois mettre après mon Me.controls("hérakles" & dp).
    Là pour l'exemple j'ai mis .Label

    Par ailleurs j'ai testé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub valider3_Click()
     
    hérakles1 = "déscription UNO"
    hérakles2 = "déscription Dos"
     
        For dp = 1 To 6
            If Me.Controls("doublage" & dp).Value = True Then
            compteur = compteur + 1
            Selection.EndKey Unit:=wdStory, Extend:=wdMove
            Selection.InsertAfter "le texte est" & hérakles1        
    Selection.Collapse direction:=wdCollapseEnd
     
            End If
    next dp
    j'ai bien obtenu à la fin de mon word, le texte est déscription UNO. Par contre, mes variables string doivent bouger et augmenter avec la boucle for

    j'ai aussi testé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub valider3_Click()
     
    hérakles1 = "déscription UNO"
    hérakles2 = "décription Dos"
     
        For dp = 1 To 6
            If Me.Controls("doublage" & dp).Value = True Then
            compteur = compteur + 1
            Selection.EndKey Unit:=wdStory, Extend:=wdMove
            Selection.InsertAfter "le texte est" & Me.Controls(""doublage" & dp).Caption
            Selection.Collapse direction:=wdCollapseEnd
     
            End If
    next dp
    Ce code fonctionne aussi, j'ai obtenu : le texte est DoublageNOMDUDOUBLAGE
    qui est le caption de ma checkbox doublage1

    donc j'ai essayé de le retranscrire pour mes Variables String, mais je n'arrive pas le faire fonctionner.

    C'est pour cela que je requiert votre aide

    Merci de m'avoir lu et merci d'avance aux personnes qui m'aideront

    Bonne soirée

    Maxetune

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 36
    Points : 40
    Points
    40
    Par défaut Variable string et boucle for
    Salut,
    Tu dois faire comme dans ton 2e essai mais définir la variable herakles dans la boucle.
    Ta boucle va de 1 à 6 et tu n'as que deux "hérakles", je ne pige pas pourquoi mais je suppose qu'en fonction de la valeur de i tu vas affecter une valeur à herakles
    par ex:
    si i est pair: herakles= hérakles1
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.InsertAfter "le texte est " & herakles
    je serais toi j'éviterais les accents dans le code.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    En faite je vais avoir 6 déscriptions différente selon la checkbox coché

    J'ai essayé ceci
    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
    For dp = 1 To 6
            herakles1 = "déscription UNO"
            herakles2 = "décription Dos"
             herakles3 = "déscription Tres"
             herakles4 = "description quatre"
             herakles5 = "description cinq"
             herakles6 = "description seis"
            If Me.Controls("doublage" & dp).Value = True Then
            compteur = compteur + 1
     
            Selection.EndKey Unit:=wdStory, Extend:=wdMove
     
            Selection.InsertAfter "texte est" & Me.Controls("herakles" & dp)
            Selection.Collapse direction:=wdCollapseEnd
     
            End If
    Next dp
    Mais le deboggeur me dit que j'ai toujours une erreur, "objet spécifié introuvable"

    Intuitivement, j'aurais dit qu'il me faut quelque chose derriere mon Me.controls("herakles" & dp)
    mais je ne sais pas quel "instruction "(type label, value,name) je dois utiliser pour faire apparaître le contenu de mes variables strings.

    Cordialement

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 36
    Points : 40
    Points
    40
    Par défaut Variable string et boucle for
    Je ne comprends pas, tu récupères soit la valeur d'un controle de formulaire soit celle d'une variable.
    Dans le 1e cas les variables herakles ne servent à rien et il faut mettre me.controls("heracles" & dp).value ( à condition que tes controles s'appellent bien herakles1, herakles2, etc.
    dans le second cas il faut d'abord sortir tes variables herakles de la boucle for et rajouter un select case dans cette boucle.
    C'est pas très beau mais ça fonctionne.
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for...
    select case dp
    case 1:
    "le texte est: " & herakles1
    case 2:
    "le texte est: " & herakles2
    '...
    end select
    next

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 36
    Points : 40
    Points
    40
    Par défaut Variable string et boucle for
    Comme ça c'est peut-être plus propre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim tablo As New Collection
    tablo.Add "déscription UNO", "herakles1"
    tablo.Add "décription Dos", "herakles2"
    tablo.Add "déscription Tres", "herakles3"
    tablo.Add "description quatre", "herakles4"
    tablo.Add "description cinq", "herakles5"
    tablo.Add "description seis", "herakles6"
     
    For dp = 1 To 6
     
        msgbox "Le texte est : " & tablo("herakles" & dp)
     
    Next
    Quoique...

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 086
    Points : 42 925
    Points
    42 925
    Par défaut
    Salut,

    Première petite chose qui n'a rien à voir avec l'erreur.
    Dans le teste suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls("doublage" & dp).Value = True
    Ça revient à dire : Si vrai est Vrai alors Vrai.
    Une case à cocher au CheckBox n'a que deux état possible soit vrai soit faux. si c'est vrai, pas besoin de comparer avec une valeur vraie pour savoir si c'est vrai.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Controls("doublage" & dp).Value
    Donnera le même résultat sans faire de comparaison.

    Autre question :

    Les valeurs Héraclès sont dans ton formulaire ?
    Si c'est le cas, doivent-elles être éditées par l'utilisateur, si ce n'est pas le cas, pas besoin de les mettre dans des contrôles pour en récupérer la valeur si tu les laisse dans ton code.

    Comme ce sont des cases à cocher, je suppose que toutes peuvent être cochées et que chaque coche ajoutera la donnée au document.
    Si c'est le cas, on peut utiliser les zone de liste ou des combo avec plusieurs choix possibles et faire une boucle sur ces choix. L'avantage est qu'on peut modifier la liste facilement tant pour son contenu que pour son nombre et ne pas devoir modifier la structure du code et du formulaire.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Je vous remercie pour vos réponses.

    Les valeurs Héraclès sont dans ton formulaire ?
    Si c'est le cas, doivent-elles être éditées par l'utilisateur, si ce n'est pas le cas, pas besoin de les mettre dans des contrôles pour en récupérer la valeur si tu les laisse dans ton code.
    Effectivement mes variables hérakles etait dans mon formulaire, l'utilisateur n'avait pas besoin de les modifier.

    Comme ce sont des cases à cocher, je suppose que toutes peuvent être cochées et que chaque coche ajoutera la donnée au document.
    Si c'est le cas, on peut utiliser les zone de liste ou des combo avec plusieurs choix possibles et faire une boucle sur ces choix. L'avantage est qu'on peut modifier la liste facilement tant pour son contenu que pour son nombre et ne pas devoir modifier la structure du code et du formulaire.
    Exactement, je pense que je suis parti en me compliquant la tache a créer autant de checkbox alors qu'il y avait des outils (listbox ou combobox) pouvant etre plus souple a utiliser.

    Je parle au passé car j'ai opté pour une toute autre option, totalement differente. Je n'utilise plus VBA, mais les blocs de construction dans Word, qui remplisse totalement la fonction que je cherchais.

    Merci encore pour votre aide.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/01/2013, 11h07
  2. Appeler une série de variable dans une boucle for
    Par jujuf1 dans le forum MATLAB
    Réponses: 2
    Dernier message: 19/02/2008, 16h06
  3. Portée d'une variable dans une boucle FOR ?
    Par Neo41 dans le forum C++
    Réponses: 20
    Dernier message: 17/11/2006, 11h14
  4. [VB.net] Declaration variable dans une boucle for
    Par nico10gbb dans le forum Windows Forms
    Réponses: 4
    Dernier message: 10/05/2006, 11h45
  5. [MySQL] Traitement des variables d'une boucle for
    Par liryc78 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 06/03/2006, 20h53

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