Question sur une variable dynamique

Résolu
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007 - 26 mars 2007 à 09:40
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 27 mars 2007 à 23:45
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

chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 mars 2007 à 11:44
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
3
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
26 mars 2007 à 09:43
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:
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
26 mars 2007 à 10:05
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...
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
26 mars 2007 à 10:09
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
26 mars 2007 à 10:10
sachant que precedemment variable =combobox.text
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
26 mars 2007 à 10:10
sachant que precedemment variable =combobox.text
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
26 mars 2007 à 10:12
euh pardon, variable = textbox.text
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
26 mars 2007 à 10:17
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
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
26 mars 2007 à 10:40
je comprend qu'il y ait pas de reponses, c'est tellement brouillon ce que j'ai fait...c l'horreur
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
26 mars 2007 à 11:02
Déclare ton tableau globalement, dans un module en Public.
Autrement, il sera vide à chaque passage

MPi
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
26 mars 2007 à 11:17
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!
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
26 mars 2007 à 11:39
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:
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
26 mars 2007 à 11:46
Regarde l'aide pour
Ubound
et Redim Preserve

MPi
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
26 mars 2007 à 12:04
ok j reflechis la.je vous tient o courant.merci encore
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
26 mars 2007 à 13:58
j'ai fait comme ma dit chaibat05, les deux possibilités mais on me dit que l'indice n'appartient pas à la selection
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
26 mars 2007 à 14:35
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
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
26 mars 2007 à 16:45
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.....
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 mars 2007 à 17:43
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)


 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 mars 2007 à 18:11
non c' est ...

i=i+1
Redim Preserve Temporaire(i)
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007
27 mars 2007 à 14:02
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...
0
Rejoignez-nous