Question sur une variable dynamique

[Résolu]
Signaler
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
bonjour à tous,
voila j'ai beau chercher sur le site je n'arrive pas à résoudre mon problème.
J'ai une textbox et un commandbutton "valider". Je souhaite qu'a chaque click je mette dans une variable qui s'appelle "temporaire" ce que l'utilisateur a rentré dans la textbox. C'est à dire que par exemple l'utilisateur entre "1" dans la textbox puis valide. Donc temporaire(1)="1". ensuite l'utilisateur entre 2 puis valide de nouveau et alors temporaire(2)="2"....
J'ai donc pour cela créé un tableau dynamique à une colonne. J'ai fait :
Private Sub CommandButton2_Click()
Dim temporaire() As String
ReDim preserve temporaire(30)
i = 0
temporaire(i)= textbox1
i= i+1
...
en fait ce que je n'arrive pas a faire c'est qu'a chaque click i rerend la valeur d'avant.C'est à dire que pour le premier click i=0 puis i=1....Je ne vois pas quelle boucle ou quoi utiliser me permettant d'augmenter de 1 mon i...
voila j'espere avoir été assez clair. Je sais que la solution doit etre un peu con mais la je trouve pas...
Merci d'avance à tous

21 réponses

Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonjour,
ou bien
Sub Boutton_click
Static i As integer
i=0
i=i+1
temporaire(i)=textbox1.value
End Sub

'si tu veux commencer à 0

Sub Boutton_click
Static i As integer
i=0
temporaire(i)=textbox1.value
i=i+1
End Sub
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
10
Salut, et pourquoi pas tout simplement ça:

Private Sub CommandButton2_Click()
Dim temporaire As String
temporaire = textbox1.Text
End Sub

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

pardon en fait je vais tenter de dire tout ce que je veux faire pour pouvoir voir tout le problème en entier. En fait j'ai des documents word (documents de référence) avec des signets en début de chaque documents. Je veux conserver ces documents de référence sans jamais les modifier.
Or  en fait mon but est de créér un document en faisant plusieurs copier-coller des documents de référence.
Mais il faut aussi, si l'utilisateur le souhaite, pouvoir modifier sur certains documents les signets puis faire le copier-coller. J'ai donc décidé, lorsque l'utilisateur veut modifier un signet, d'ouvrir le document de référence puis de modifier le signet puis d'enregistrer ce document dans un sous dossier appelé temporaire(pour ne pas écraser le vrai document de référence)
Pour etre plus clair, par exemple l'utilisateur souhaite regrouper les documents doc1,doc3 et doc5. Mais il veut modifier le signet du doc3 et doc5.
Donc en fait pout voir si un signet a été modifié je rentre dans la variable dynamique "temporaire "le nom du document modifié. Donc temporaire(1)="doc3" et temporaire(2) = "doc5"
Ensuite comme j'ai une treeview pour classer les docs je dis que
si treeview.nodes.text=temporaire (i)
alors faire le copier-coller du doc modifié
....toute cette partie je m'en occupe.
Ce que je n'arrive pas a faire c que temporaire(1)="doc3" puis lorsque clicke alors temporaire(2) = "doc5".....sachant que doc3,doc5...c le texte d'une combobox..
Je sais c compliqué a expliquer mais bon..
merci en tout cas de l'aide, je souhaite juste pouvoir passer a temporaire(i+&) lorque je clique sur un  bouton...
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

un peu de code pour etre plus clair :
Private Sub CommandButton2_Click()
Dim destination As String
Dim destination2 As String
Dim temporaire() As String




ReDim preserve temporaire(30)


destination = "C:\Documents and Settings\test\Bureau\fx2\Documents\Dos" & ComboBox1
destination2 = "C:\Documents and Settings\test\Bureau\fx2\Documents\Dos\temporaire" & ComboBox1


 Documents.Open FileName:=destination  'ici ouvre document de reference
 ActiveDocument.Bookmarks("frequence").Range.Select 'change signet'
Selection.Text = variable
ActiveDocument.SaveAs FileName:= destination2For i 0 To i 30 'c la que je ne sais pas comment faire'
temporaire(i) = ComboBox1.Text 'je veux que temporaire i prenne le texte de la combobox'

i = i + 1
Next i


ActiveDocument.Close


End Sub
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

sachant que precedemment variable =combobox.text
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

sachant que precedemment variable =combobox.text
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

euh pardon, variable = textbox.text
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

j'ai fait pour faire simple :
Dim destination As String
Dim destination2 As String
Dim temporaire() As String




ReDim temporaire(30)


destination = "C:\Documents and Settings\test\Bureau\fx2\Documents\Dos" & ComboBox1
destination2 = "C:\Documents and Settings\test\Bureau\fx2\Documents\Dos\temporaire" & ComboBox1


 Documents.Open FileName:=destination
 ActiveDocument.Bookmarks("frequence").Range.Select
Selection.Text = TextBox2.Text
ActiveDocument.SaveAs FileName:=destination2For i 0 To i 30
temporaire(i) = ComboBox1.Text
i = i + 1
Next i
ActiveDocument.Close
End Sub
mais dans temporaire(O) j'ai la valeur de la combobox qui si metmais elle ne se met que dans temporaire(à), elle ecrase toujours la valeur precedente car elle ne passe pas  a  i+1
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

je comprend qu'il y ait pas de reponses, c'est tellement brouillon ce que j'ai fait...c l'horreur
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Déclare ton tableau globalement, dans un module en Public.
Autrement, il sera vide à chaque passage

MPi
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

merci mais en fait je ne sais pas comment faire pour saisir une valeur dans temporaire (1) puis une autre dans temporaire(2)...je ne sais pas quelle boucle utiliser.. sans remplir tout mon tableau d'un coup...en tout cas merci de t'interesser a mon cas!
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
10
Et un truc dans ce style?

Dim i as integer
i=0

Sub Boutton_click

i=i+1
temporaire(i)=textbox1.value

End Sub

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Regarde l'aide pour
Ubound
et Redim Preserve

MPi
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

ok j reflechis la.je vous tient o courant.merci encore
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

j'ai fait comme ma dit chaibat05, les deux possibilités mais on me dit que l'indice n'appartient pas à la selection
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

ok ca marche.j'ai fait comme ma dit chaibar sauf que je n'ai pas mis i=0 parceque sinon ca me le remet chaque fois a 0 et donc ca ecrase a chaque fois.
Merci a tous
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

c'est d'ailleurs bizarre que ca me le remette a 0 vu ke je lé declaré en static....ié pas compris ca mais bon.....
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Rebonjour,
Je me posais justement la question avant ton dernier post.
Voici mon opinion


Static i As integer
If IsNull(i) Then i=0
'tu débute à 0


Redim Preserve Temporaire(i)
i=i+1


Si tu as déclarer temporaire en dehors de la
procédure et que tu l' as dimensionné à 30
il faut tester sur i pour savoir si tu n' a pas dépasser 29


Temporaire(30) n' éxiste pas (l' index commence à 0)


 
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
non c' est ...

i=i+1
Redim Preserve Temporaire(i)
Messages postés
200
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
12 juin 2007

j'ai fait comme dit sauf que le redim après marche pas parce que l'indice n'appartient pas a la selection. en tout cas merci bien de ton aide...ca m'a aidé et je comprend plus de trucs maintenant...