A voir également:
- Vba concatenate string and variable
- Vb - Télécharger - Langages
- Vb cable - Télécharger - Audio & Musique
- Concaténation pdf - Guide
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
18 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
16 sept. 2007 à 23:33
16 sept. 2007 à 23:33
Bonsoir,
fais plutôt 3 boucles imbriquées :
Sub test()
For i = 1 To 3
For j = 1 To 3
For k = 1 To 3
MsgBox (i & j & k)
Next k
Next j
Next i
End Sub
evite d'utiliser les etiquettes et les goto, et ne donne pas de chiffre comme nom de variable, démarre-les toujours par une lettre
cdt
eric
fais plutôt 3 boucles imbriquées :
Sub test()
For i = 1 To 3
For j = 1 To 3
For k = 1 To 3
MsgBox (i & j & k)
Next k
Next j
Next i
End Sub
evite d'utiliser les etiquettes et les goto, et ne donne pas de chiffre comme nom de variable, démarre-les toujours par une lettre
cdt
eric
merci,
c'est gentil.
En plus compliqué si les variables sont issue d'un fichier texte alors comment les assignerais tu?
ex: un fichier texte avec des valeures (1, 2, 3)
open c:fichier.txt
c'est chaud là ?
Merci
c'est gentil.
En plus compliqué si les variables sont issue d'un fichier texte alors comment les assignerais tu?
ex: un fichier texte avec des valeures (1, 2, 3)
open c:fichier.txt
c'est chaud là ?
Merci
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
19 sept. 2007 à 11:36
19 sept. 2007 à 11:36
Pas sûr d'avoir bien compris mais je les mettrai dans une variable tableau
avec liste.txt de la forme "1","2","3"
Sub test()
Dim a(3) As String
fich = "e:\_tmp\liste.txt"
Dim i As Integer
n = FreeFile
Open fich For Input As #n 'ouverture du fichier
While Not EOF(n) ' et lecture tant qu'on n'est pas arrivé à la fin
Input #n, a(i)
i = i + 1
Wend
End Sub
et ensuite tu fais travailler tes boucles i, j, k sur les indices du tableau
si j=0 alors a(j) => "1" etc
eric
avec liste.txt de la forme "1","2","3"
Sub test()
Dim a(3) As String
fich = "e:\_tmp\liste.txt"
Dim i As Integer
n = FreeFile
Open fich For Input As #n 'ouverture du fichier
While Not EOF(n) ' et lecture tant qu'on n'est pas arrivé à la fin
Input #n, a(i)
i = i + 1
Wend
End Sub
et ensuite tu fais travailler tes boucles i, j, k sur les indices du tableau
si j=0 alors a(j) => "1" etc
eric
Merci sa marche déjà (on arrangeant le code)
Je voulais dire que pour les valeurs numérique c'est assez simple à comprendre et je t'en remérci;
Mais par example pour faire la même chose sauf que les valeurs sont dans un fichier texte séparé par un éspace
(ou virgule)
Alors comment déclarer des boucles imbriqué pour chaque valeur qu'il y aurait ?
Open C:fichier1.txt
for i= (1ére valeur du fichier)
If (encore des valeurs)
imbriqué les boucle
Je sais que c'est faut mais je pense qu'il faud les prendre comme des chaine de caractère . (¿)
Qu'en pense-tu ? C'est compliqués ?
Merci .
Je voulais dire que pour les valeurs numérique c'est assez simple à comprendre et je t'en remérci;
Mais par example pour faire la même chose sauf que les valeurs sont dans un fichier texte séparé par un éspace
(ou virgule)
Alors comment déclarer des boucles imbriqué pour chaque valeur qu'il y aurait ?
Open C:fichier1.txt
for i= (1ére valeur du fichier)
If (encore des valeurs)
imbriqué les boucle
Je sais que c'est faut mais je pense qu'il faud les prendre comme des chaine de caractère . (¿)
Qu'en pense-tu ? C'est compliqués ?
Merci .
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
22 sept. 2007 à 01:51
22 sept. 2007 à 01:51
Bonsoir marcus,
fich = "e:\_tmp\liste.txt" : tu voulais récuperer les données fournies dans un fichier texte. Pour les test j'en ai créé un appelé liste.txt que j'ai mis sur le lecteur E:, répertoire \_tmp\. Tu remplaces par ton fichier et ton chemin. Et comme c'est long à écrire je l'ai affecté à la variable fich
Dim a(3) As String = déclaration d'une variable tableau qui peut stocker plusieurs valeurs. Ici 4 valeurs de a(0) à a(3) mais seules 3 serviront ici. Dim a(2) était suffisant... C'est plus simple à utiliser ensuite dans les boucles. Tu fais varier i de 0 à 2 et tu lis ou écris a(i)
Input #n, a(i) = lecture sequentielle dans le fichier ouvert sur #n
#n est un 'canal' ouvert par windows, il faut lui demander un numero de canal libre d'où le n = FREEFILE juste avant. pour lire le fichier liste.txt. Comme ça tu peux travailler avec plusieurs fichiers ouverts simultanément et tu fais reference au fichier en donnant juste son n° de canal.
un fichier sequentiel est un fichier texte où les données sont séparée par des virgules. En l'occurence "1","2","3"
Chaque Input lit une donnée dans liste.txt et la stocke dans une variable tableau a() jusqu'à la fin du fichier (EOF)
Donc en sortie de boucle tu as
a(0) = "1"
a(1) = "2"
a(2) = "3"
C'est expliqué sommairement mais ça t'éclairera peut-etre
eric
fich = "e:\_tmp\liste.txt" : tu voulais récuperer les données fournies dans un fichier texte. Pour les test j'en ai créé un appelé liste.txt que j'ai mis sur le lecteur E:, répertoire \_tmp\. Tu remplaces par ton fichier et ton chemin. Et comme c'est long à écrire je l'ai affecté à la variable fich
Dim a(3) As String = déclaration d'une variable tableau qui peut stocker plusieurs valeurs. Ici 4 valeurs de a(0) à a(3) mais seules 3 serviront ici. Dim a(2) était suffisant... C'est plus simple à utiliser ensuite dans les boucles. Tu fais varier i de 0 à 2 et tu lis ou écris a(i)
Input #n, a(i) = lecture sequentielle dans le fichier ouvert sur #n
#n est un 'canal' ouvert par windows, il faut lui demander un numero de canal libre d'où le n = FREEFILE juste avant. pour lire le fichier liste.txt. Comme ça tu peux travailler avec plusieurs fichiers ouverts simultanément et tu fais reference au fichier en donnant juste son n° de canal.
un fichier sequentiel est un fichier texte où les données sont séparée par des virgules. En l'occurence "1","2","3"
Chaque Input lit une donnée dans liste.txt et la stocke dans une variable tableau a() jusqu'à la fin du fichier (EOF)
Donc en sortie de boucle tu as
a(0) = "1"
a(1) = "2"
a(2) = "3"
C'est expliqué sommairement mais ça t'éclairera peut-etre
eric
Merci eric,
c'est sympat de ta part.
Je vais lire ton explication, et essayer de comprendre le fonctionnement ce weekend.
Bon weenk @+
c'est sympat de ta part.
Je vais lire ton explication, et essayer de comprendre le fonctionnement ce weekend.
Bon weenk @+
Salut eric,
Ton éxplication est trés claire .
Il y à seulement des points que je dois éclaircire .
Lorsque tu dis :
"et ensuite tu fais travailler tes boucles i, j, k sur les indices du tableau
si j=0 alors a(j) => "1" etc.. "
Je tourne bétement en rond car je me demande s'il faudrais rajouter trois boucle imbriqué avec A, J, et K
et jouer avec le tableau "a" voir des conditions "IF"
(De plus je n'ai plus accé à mon Pc mais celui d'un amie et sans mes logiciels );)
Voilà, peut tu m'éclairer sur la fin stp,
Merci
marc
Ton éxplication est trés claire .
Il y à seulement des points que je dois éclaircire .
Lorsque tu dis :
"et ensuite tu fais travailler tes boucles i, j, k sur les indices du tableau
si j=0 alors a(j) => "1" etc.. "
Je tourne bétement en rond car je me demande s'il faudrais rajouter trois boucle imbriqué avec A, J, et K
et jouer avec le tableau "a" voir des conditions "IF"
(De plus je n'ai plus accé à mon Pc mais celui d'un amie et sans mes logiciels );)
Voilà, peut tu m'éclairer sur la fin stp,
Merci
marc
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
26 sept. 2007 à 14:41
26 sept. 2007 à 14:41
Bonjour,
Pas bcp de différence avec ce que je t'avais mis dans le 1er message.
Tes boucles doivent utiliser 3 variables i, j, k et utiliser a(n)
Donc si tu as mis tes variables dans a(0) à a(2) :
eric
Pas bcp de différence avec ce que je t'avais mis dans le 1er message.
Tes boucles doivent utiliser 3 variables i, j, k et utiliser a(n)
Donc si tu as mis tes variables dans a(0) à a(2) :
Sub test() For i = 0 To 2 For j = 0 To 2 For k = 0 To 2 ' MsgBox (i & j & k) ' il suffit de remplacer par MsgBox(a(i) & a(j) & a(k)) Next k Next j Next i
eric
Merci,
Je vais essayer de l'éxecuter pour mieux comprendre. (mais avec VBA de word car j'ai plus mon Pc)
Alors le code serait comme sa :
Sub test()
Dim a(3) As String
fich = "e:\_tmp\liste.txt"
Dim i As Integer
n = FreeFile
Open fich For Input As #n 'ouverture du fichier
While Not EOF(n) ' et lecture tant qu'on n'est pas arrivé à la fin
Input #n, a(i)
i = i + 1
Wend
End Sub
Sub test()
For i = 0 To 2
For j = 0 To 2
For k = 0 To 2
' MsgBox (i & j & k)
' il suffit de remplacer par
MsgBox(a(i) & a(j) & a(k))
Next k
Next j
Next i
End
Je me suis demandé s'il fallait retirer End Sub et Sub test() entre les deux code ou si c'était juste ?
merci
marc
Je vais essayer de l'éxecuter pour mieux comprendre. (mais avec VBA de word car j'ai plus mon Pc)
Alors le code serait comme sa :
Sub test()
Dim a(3) As String
fich = "e:\_tmp\liste.txt"
Dim i As Integer
n = FreeFile
Open fich For Input As #n 'ouverture du fichier
While Not EOF(n) ' et lecture tant qu'on n'est pas arrivé à la fin
Input #n, a(i)
i = i + 1
Wend
End Sub
Sub test()
For i = 0 To 2
For j = 0 To 2
For k = 0 To 2
' MsgBox (i & j & k)
' il suffit de remplacer par
MsgBox(a(i) & a(j) & a(k))
Next k
Next j
Next i
End
Je me suis demandé s'il fallait retirer End Sub et Sub test() entre les deux code ou si c'était juste ?
merci
marc
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
26 sept. 2007 à 23:44
26 sept. 2007 à 23:44
Oui tu peux enlever ce que tu dis si tu veux que les 2 macros n'en fasse plus qu'une
Mais met bien End Sub à la fin
eric
Mais met bien End Sub à la fin
eric
Bonjour,
J'ai fini par comprendre l'ensemble ,
(Se que j'aurait dû faire plutôt )
Mais Concérnant :
Input #n, a(i)
i = i + 1
Le (i) de a(i) est une variable de compteur avec: i = i + 1
Oú c'est plutôt pour dire afficher "a" là oú il y à "i" ?
Voilà, c'était tout ce qui me manquait à comprendre,
Si sa ne te dérange pas plus,
merci
marc
J'ai fini par comprendre l'ensemble ,
(Se que j'aurait dû faire plutôt )
Mais Concérnant :
Input #n, a(i)
i = i + 1
Le (i) de a(i) est une variable de compteur avec: i = i + 1
Oú c'est plutôt pour dire afficher "a" là oú il y à "i" ?
Voilà, c'était tout ce qui me manquait à comprendre,
Si sa ne te dérange pas plus,
merci
marc
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
27 sept. 2007 à 23:19
27 sept. 2007 à 23:19
Bonsoir marc,
a() est un tableau de 4 élements (imagine 4 cases numérotée 0,1,2,3)
i est l'index permettant de s'adresser au (i+1) éme élément
donc si i=0 tu ecris ou lit la 1ère case de a()
si i=2 tu ecris ou lit la 3ème case de a()
Dans cet exemple on lit le 1er morceau du fichier texte jusqu'à la virgule (séparateur de valeur) et on l'écrit dans a(0) (1ere case de a() )
puis la seconde et comme on a fait i+1 on le stocke dans la 2nde case a(1)
etc
eric
a() est un tableau de 4 élements (imagine 4 cases numérotée 0,1,2,3)
i est l'index permettant de s'adresser au (i+1) éme élément
donc si i=0 tu ecris ou lit la 1ère case de a()
si i=2 tu ecris ou lit la 3ème case de a()
Dans cet exemple on lit le 1er morceau du fichier texte jusqu'à la virgule (séparateur de valeur) et on l'écrit dans a(0) (1ere case de a() )
puis la seconde et comme on a fait i+1 on le stocke dans la 2nde case a(1)
etc
eric
Bonjour,
Donc i sert juste à créer les dénomination de a() pour avoir à chaque passage de i :1er tours = a(0), 2é tours = a(1) et 3é tour de i on obtient a(3) .
C'est à la fois un compteur et un dénominateur.
J'éspers ne pas me planter car je sais que c'est niveau débutant. (puis tu éxplique assez bien en plus)
merci eric,
marc @+
Donc i sert juste à créer les dénomination de a() pour avoir à chaque passage de i :1er tours = a(0), 2é tours = a(1) et 3é tour de i on obtient a(3) .
C'est à la fois un compteur et un dénominateur.
J'éspers ne pas me planter car je sais que c'est niveau débutant. (puis tu éxplique assez bien en plus)
merci eric,
marc @+
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 248
29 sept. 2007 à 09:53
29 sept. 2007 à 09:53
Volià, c'est un compteur qu'on utilise en index d'un tableau
eric
eric
Salut Eric,
Je voudrais éxperimenter un bouton de commande :).
Pour aller encore plus loint (un peut;)
Et dans le même cadre mais avec un contrôle qui commande l'éxecution du programme çi dessus ( Sub test() ) (dans une feuille VB),
Dabord créer la feuille "Feuil1"
Et j'ésite à écrire dans la boite code projet1 :
Private Sub Feuil1_Load()
(Car je m'aide d'un example de code).
Puis je pense qu'il faud créer un bouton "Bt1" sur la feuille "Feuil1" puis une nouvelle procédure pour le bouton en double-cliquant dessus :
"procédure=Click" et Objet (Form) = "Bt1"
Puis son Code pour commander l'application "test":
Private Sub Bt1_Click()
test ' éxecute les boucle imbriqué nomé " Sub test() "
End Sub
Maintenant pour attaché "test" à la feuille "Feuil1" je dois faire idem en créant une procédure :
"procédure = "Load ou Sub test" et
Objet (Form) = "?"
Puis y coler tout le code précédament créé (avec le fichier séquenciel)
Voilà, j'éspers que c'est pas confus comme explication .
Je trouve sa assez intéressant alors je vais essayer d'étre plus claire la prochaine fois .
Voilà, j'éspers que c'est assez claire comme éxplication.
merci
Marc A+
Je voudrais éxperimenter un bouton de commande :).
Pour aller encore plus loint (un peut;)
Et dans le même cadre mais avec un contrôle qui commande l'éxecution du programme çi dessus ( Sub test() ) (dans une feuille VB),
Dabord créer la feuille "Feuil1"
Et j'ésite à écrire dans la boite code projet1 :
Private Sub Feuil1_Load()
(Car je m'aide d'un example de code).
Puis je pense qu'il faud créer un bouton "Bt1" sur la feuille "Feuil1" puis une nouvelle procédure pour le bouton en double-cliquant dessus :
"procédure=Click" et Objet (Form) = "Bt1"
Puis son Code pour commander l'application "test":
Private Sub Bt1_Click()
test ' éxecute les boucle imbriqué nomé " Sub test() "
End Sub
Maintenant pour attaché "test" à la feuille "Feuil1" je dois faire idem en créant une procédure :
"procédure = "Load ou Sub test" et
Objet (Form) = "?"
Puis y coler tout le code précédament créé (avec le fichier séquenciel)
Voilà, j'éspers que c'est pas confus comme explication .
Je trouve sa assez intéressant alors je vais essayer d'étre plus claire la prochaine fois .
Voilà, j'éspers que c'est assez claire comme éxplication.
merci
Marc A+
Bonsoir Marc,
Je te rassure, si si c'est un peu confus ;-)
Les grandes lignes sont là mais tu t'égards un peu parfois...
Pourquoi Feuil1_Load ? de quelle version d'excel viennent tes exemples ?
Ce n'est pas un evenement sheets ça, si c'est pour lancer une procédure au chargement du classeur il faudrait utiliiser WorkbookOpen.
Et pour ton 1er test bouton fait simple:
dessine ton bouton, double-clique dessus et dans le code mets msgbox("yesssss!!!! ça marche")
tu auras ton 1er bouton fonctionnel tu peux modifier ton code, faire d'autre procédures que tu appelles, aller voir les evenement d'une feuille, de thisworkbook etc
Amuses toi bien :-)
eric
Je te rassure, si si c'est un peu confus ;-)
Les grandes lignes sont là mais tu t'égards un peu parfois...
Pourquoi Feuil1_Load ? de quelle version d'excel viennent tes exemples ?
Ce n'est pas un evenement sheets ça, si c'est pour lancer une procédure au chargement du classeur il faudrait utiliiser WorkbookOpen.
Et pour ton 1er test bouton fait simple:
dessine ton bouton, double-clique dessus et dans le code mets msgbox("yesssss!!!! ça marche")
tu auras ton 1er bouton fonctionnel tu peux modifier ton code, faire d'autre procédures que tu appelles, aller voir les evenement d'une feuille, de thisworkbook etc
Amuses toi bien :-)
eric