Soucis avec répetition de variable

  • Initiateur de la discussion Raph
  • Date de début
R

Raph

Guest
Salut,

Bon le titre n'est pas explicite mais vu la demande vous comprendrez
que c'est pas évident d'y mettre un titre :)

En fait voila un exemple de mon code

Dim a1 as string
Dim a2 as string
Dim a3 as string
Dim b1 as string
Dim b2 as string
Dim b3 as string

a1 = ''
a2 = ''
a3 = ''
b1 = ''
b2 = ''
b3 = ''

Vu comme ça on voit pas l'intérêt du programme, mais c'est pour l'exemple.

En fait je voudrai faire une boucle avec un compteur allant de 1 à 3 pour remplir ces variables.
Mais comment dire que a & mon compteur = '' ?

J'espère que vous saisirez ma question
 
R

Raph

Guest
L'idée est bonne, mais ca marche pas pour ce que je veux

En fait mes variables sont comme cela, j'ia peux être trop simplifier pour ma demande.

TB_Codecl01jeudi = ''
TB_Codecl02jeudi = ''
TB_Codecl03jeudi = ''
TB_Codecl04jeudi = ''
TB_Codecl05jeudi = ''
TB_Codecl06jeudi = ''
TB_Codecl07jeudi = ''
TB_Codecl08jeudi = ''

Car je les utilise dans une userform pour une saisie et ensuite l'écrire sur une feuille
Donc ce que je voudrai qui bouge c'est le 01, 02 ....

En en concatenant

TB_Codecl &01 &jeudi =''

Ca ne fonctionne pas

Donc ca colle pas avec ton idée, mais je te remerci et je la garde ca me servira ailleurs :)
 

Raphou96

XLDnaute Nouveau
Raph c'est moi j'avais oublié que j'ai un compte ouvert

C'est ce que je crains que ma demande soit impossible.
Dommage car j'ai une quarantaine de variable se répetant chacunes 5 fois ca fait du code.

Message édité par: Raphou96, à: 02/08/2005 14:30
 

Hervé

XLDnaute Barbatruc
Bonjour raph, jordan, pascal

Pas sur non plus, par contre si tu parles de controles textbox comme le TB le laisse penser.

ce code va remettre à zéro les textbox TB_Code.....

For i = 1 To 8
Controls('TB_Codecl0' & i & 'jeudi') = ''
Next i

ca sent le zop mon intervention :)

salut
 

Hervé

XLDnaute Barbatruc
re re

je reviens à la charge, après réflexion, pourquoi veux tu vider des variables, si tu n'en à plus besoin tu les laisses mourir de leur belle mort en fin de procédure (sauf cas des public).

non ?

c'est vraiment un après midi zop pour moi :)

salut
 

Bebere

XLDnaute Barbatruc
bonjour Hevé,Raphou
la suite est peut-être ce que tu veux

Sub essai()
Dim s As String, j As String
s = 'TB_Codecl'
j = 'jeudi'
'rempli tableau txt TB_Codecl,i,jeudi
Dim txt(8) As String
For i = 1 To 8
txt(i) = s & i & j
Next i
'pour lire
For i = 1 To 8
MsgBox txt(i)
Next i

End Sub
à+ :)
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Euh Bebere

Je ne suis pas sûr que ton code initialise les variables dont le nom soit de la forme TB_Codecl01jeudi

J'ai bien peur que soit ce sont des noms de textbox et là la macro de Hervé fonctionnera soit ce sont les noms de variables et là de 2 choses l'une il faut vraiment voir si tu es obligé de tout remettre à vide, et si oui bah tu seras cetainement obligé de le faire à la mano
 

Raphou96

XLDnaute Nouveau
Salut les gars et merci de votre aide

Alors la solution de Hervé est excelente pour la partie vidage des controls
Car en fait, je permet la reinitialisation de la userform grace à un bouton pour eviter de tout fermer et tout réouvrir.

Mais j'incrémente aussi des valeurs (range('A1')) dans mes controls ou alors inverse mes controles incrémante des feuilles (range('A1'))

Je vais tester le code de Bebère pour uen autre parle celle d'incrémantation avec les range. Ca peux fonctionner et me solutionner tout mon soucis.
 

Hervé

XLDnaute Barbatruc
re tout le monde, bonjour bebere,

Raph on parle de controles ou de variables, je suis perdu :eek:

La boucle que je t'ai donnée, tu peux t'en servir pour renvoyer les textbox dans les ranges, si tes cellules se suivent :

For i = 1 To 8
range('a' & i)=Controls('TB_Codecl0' & i & 'jeudi')
Next i

si tes cellules sont dispersées, tu peux passer par un array pour stocker tes cellules :

Dim cellule As Variant
Dim i As Byte
cellule = Array('A1', 'b2', 'l4')
For i = 1 To 3
Range(cellule(i - 1)) = Controls('TB_Codecl0' & i & 'jeudi')
Next i

ou passer par la propriété tag des controles :

Dim i As Byte
For i = 1 To 3
With Controls('TB_Codecl0' & i & 'jeudi')
Range(.Tag) = .Value
End With
Next i

En espérant t'avoir été utile;

salut
 

Raphou96

XLDnaute Nouveau
En fait il y a les deux des controles et des variables, ben oui faut faire simple . :lol:

Bon la fonction controls est excelentes et focntionne à merveille j'ia deja fait du menage dans mon code.

Je vais étudier tes exemples pour voir la suite de mon programme. Qui en fait est déjà réalisé mais je profite du mois d'aout et donc moins de travail pour l'arranger un peu.

Le tag je ne connais pas, je vais etudier cela de plus près.

En tout cas merci à toi et aux autres pour vos réponses.

Message édité par: Raphou96, à: 02/08/2005 15:29
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Raphou, Pascal, Hervé, Bebere

Pour la méthode sur Array(Range.Address) proposé par Hervé plus haut, je préconise plus direct :

Private Sub CommandButton5_Click()
Dim i As Byte
Dim Cell As Variant
   
   
For Each Cell In Array('B7', 'C18', 'F18', 'C21', 'F21', 'A26', 'B26', 'D26', 'E26', 'F26', 'B46', 'B47')
        i = i + 1
        Me.Controls('TextBox' & i) = Range(Cell)
   
Next

End Sub

(Voir Démo => Lien supprimé)

Pour les Tags on peut aussi éviter la Boucle For 1 to 3 car en fait on peut ne chercher que les Controls qui nous interessent :

Sub Ini()
Dim CTRL As Control
Dim Adresse As String
   
For Each CTRL In USF.Controls
       
If CTRL.Tag <> '' Then
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Adresse = CTRL.Tag
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CTRL.Value = Sheets('Feuil1').Range(Adresse)
&nbsp; &nbsp; &nbsp; &nbsp;
End If
&nbsp; &nbsp;
Next CTRL
End Sub

(Voir Démo => Lien supprimé


Et sinon donc ne pas oublier qu'une simple instruction :
End
Déchargera toutes les Variables Publiques de la mémoire... (Le UserForm Itou !!!) C'est radical... mais au cas où...

Bonne Fin d'Aprèm
[ol]@+Thierry[/ol]
 

Discussions similaires

Réponses
7
Affichages
361

Statistiques des forums

Discussions
312 506
Messages
2 089 119
Membres
104 038
dernier inscrit
Helpme59