Boucle "for" sous visual basic
Résolu/Fermé
David666
Messages postés
10
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
18 mars 2009
-
4 mars 2009 à 12:02
David666 Messages postés 10 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 18 mars 2009 - 5 mars 2009 à 12:01
David666 Messages postés 10 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 18 mars 2009 - 5 mars 2009 à 12:01
A voir également:
- Boucle "for" sous visual basic
- Visual basic - Télécharger - Langages
- Microsoft 365 basic - Accueil - Microsoft Office
- Microsoft visual c++ runtime - Guide
- Visual paradigm - Télécharger - Gestion de données
- Downloader for pc - Télécharger - Téléchargement & Transfert
8 réponses
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
4 mars 2009 à 12:06
4 mars 2009 à 12:06
alors, d'abord il va faloir dé"clarer ta variable n:
(si je me souveins bien)
DIM N as integer
si N est utilisée plusieurs fois dans le programme, à des endroits différents, il faut déclarer N dans les fariables globales...
ensuite, tu fais ton for:
for i = 1 to n
juste pour info... j'ai débuté aussi en visual basic, c'est sympa, tu développer rapidement, mais si tu veux vraiment faire des choses puissantes, interesses toi au C, C++, JAVA, ....
je crache pas dans la soupe, j'ai fait de tres bon projets en VB aussi ....
(si je me souveins bien)
DIM N as integer
si N est utilisée plusieurs fois dans le programme, à des endroits différents, il faut déclarer N dans les fariables globales...
ensuite, tu fais ton for:
for i = 1 to n
juste pour info... j'ai débuté aussi en visual basic, c'est sympa, tu développer rapidement, mais si tu veux vraiment faire des choses puissantes, interesses toi au C, C++, JAVA, ....
je crache pas dans la soupe, j'ai fait de tres bon projets en VB aussi ....
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 mars 2009 à 12:10
4 mars 2009 à 12:10
Bonjour,
Difficile comme ça de donner une solution. Il faudrait savoir où l'utilsateur saisie le nombre de boucle (n).
Si l'utilisateur indique la précision dans la cellule A1 de la feuille 1, on peut faire :
;o)
Difficile comme ça de donner une solution. Il faudrait savoir où l'utilsateur saisie le nombre de boucle (n).
Si l'utilisateur indique la précision dans la cellule A1 de la feuille 1, on peut faire :
For i = 1 To CInt(Sheets(1).Range("A1").Value '... Next i
;o)
David666
Messages postés
10
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
18 mars 2009
4 mars 2009 à 12:15
4 mars 2009 à 12:15
Bonjour,
Merci pour ta réponse rapide.
Le programme ne fonctionne toujours pas, il m'affiche "erreur de compilation : constante requise".
Pour information , j'ai utilisé ces commandes pour récupérer la variable depuis excel :
' Précision du calcul
Set Temp = Worksheets("Interface").Range("D32")
n = Temp
(à ce niveau là, si je fais un msgbox n , il m'affiche bien la valeur de n entrée précédemment)
Ensuite j'utilise ce genre de boucles :
For inc = 1 To n
X_Inc = X_Bord_Attaque + (inc / n) * X_Corde
Y_Inc = Y_Bord_Attaque + (inc / n) * Y_Corde
Incrementation_Corde(inc, 1) = X_Inc
Incrementation_Corde(inc, 2) = Y_Inc
Next inc
Si tu vois une erreur, incohérence ou autre...
Merci !! ;-)
Merci pour ta réponse rapide.
Le programme ne fonctionne toujours pas, il m'affiche "erreur de compilation : constante requise".
Pour information , j'ai utilisé ces commandes pour récupérer la variable depuis excel :
' Précision du calcul
Set Temp = Worksheets("Interface").Range("D32")
n = Temp
(à ce niveau là, si je fais un msgbox n , il m'affiche bien la valeur de n entrée précédemment)
Ensuite j'utilise ce genre de boucles :
For inc = 1 To n
X_Inc = X_Bord_Attaque + (inc / n) * X_Corde
Y_Inc = Y_Bord_Attaque + (inc / n) * Y_Corde
Incrementation_Corde(inc, 1) = X_Inc
Incrementation_Corde(inc, 2) = Y_Inc
Next inc
Si tu vois une erreur, incohérence ou autre...
Merci !! ;-)
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 mars 2009 à 12:42
4 mars 2009 à 12:42
Comment est déclaré "Temp" ? et sur quelle ligne apparait le message d'erreur ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
David666
Messages postés
10
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
18 mars 2009
4 mars 2009 à 13:36
4 mars 2009 à 13:36
Bonjour Polux,
Désolé je n'avais pas vu ta première réponse. J'essaie tout de suite avec la méthode que tu me proposes.
La saisie de n se fait sur une feuille excel (appelée Interface dans le programme), dans une case prévue à cet effet. J'essaie avec ta méthode et je te tiens au courant.
Pour la déclaration de Temp, elle est déclarée as Range juste avant la ligne que j'ai recopiée dans mon message précédent.
Par contre je vais surement réécrire les lignes de récupération des données depuis excel parce que j'avais vraiment pas choisi le plus simple pour récupérer les variables... ;-)
Désolé je n'avais pas vu ta première réponse. J'essaie tout de suite avec la méthode que tu me proposes.
La saisie de n se fait sur une feuille excel (appelée Interface dans le programme), dans une case prévue à cet effet. J'essaie avec ta méthode et je te tiens au courant.
Pour la déclaration de Temp, elle est déclarée as Range juste avant la ligne que j'ai recopiée dans mon message précédent.
Par contre je vais surement réécrire les lignes de récupération des données depuis excel parce que j'avais vraiment pas choisi le plus simple pour récupérer les variables... ;-)
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
4 mars 2009 à 14:13
4 mars 2009 à 14:13
Bonjour,
Une piste..
De la façon dont tu initialise Temp c'est considéré comme un Range.
Pour valider n
n=Temp.Value
Mais Temp n'est pas nécessaire..
n = Worksheets("Interface").Range("D32")
suffit.
A+
Une piste..
De la façon dont tu initialise Temp c'est considéré comme un Range.
Pour valider n
n=Temp.Value
Mais Temp n'est pas nécessaire..
n = Worksheets("Interface").Range("D32")
suffit.
A+
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 mars 2009 à 17:47
4 mars 2009 à 17:47
re,
Comme le dit lermite (salut au passage...), Temp n'est pas utile ici. Et certainement pas en Range, alors que l'on a besoin de récupérer une valeur et non un objet.
Il manque une parenthèse fermante à mon exemple : CInt(Sheets(1).Range("A1").Value)
;o)
Comme le dit lermite (salut au passage...), Temp n'est pas utile ici. Et certainement pas en Range, alors que l'on a besoin de récupérer une valeur et non un objet.
Il manque une parenthèse fermante à mon exemple : CInt(Sheets(1).Range("A1").Value)
;o)
David666
Messages postés
10
Date d'inscription
mercredi 4 mars 2009
Statut
Membre
Dernière intervention
18 mars 2009
5 mars 2009 à 12:01
5 mars 2009 à 12:01
Bonjour tout le monde !
Merci à tous pour vos conseils.
J'ai finalement pu résoudre le problème un peu à la barbare...
En fait le problème ne venait apparament pas de la boucle "for" mais du tableau dans lequel je stocke les données... Je l'avais déclaré par la commande Dim Montableau(1 to n, 1 to 2) as Double (ou as je-sais-plus-trop-quoi), ce qui apparament posait problème.
J'ai finalement fait :
Dim Montableau as Variant
ReDim Montableau(1 to n, 1 to 2)
Et là ça marche (par contre je sais pas du tout pourquoi !! ;-) )
Pendant que j'y suis j'aurais encore une question...
Du coup mon programme permet de calculer une série de coordonnées que je stocke dans ce tableau (est-ce qu'elles sont justes ou pas ça c'est un autre débat :D)
Je souhaiterais recopier ce tableau sur une feuille excel déterminée pour les exploiter (en fait j'ai un doc excel avec plusieurs feuilles : Interface, Journal, etc...). Je veux donc récupérer les données dans les colonnes A à B d'excel (une colonne du tableau VBA correspondant à une colonne de données sour excel), dans la feuille "Journal".
J'ai bien trouvé la commande pour recopier UNE cellule du tableau dans UNE cellule excel... Bon le problème c'est que j'ai au bas mot 40.000 coordonnées à exporter... Ca fait un peu beaucoup pour le faire "à la main" !!! :)
Pour info j'ai tenté avec une boucle for avec cette commande, mais j'ai toujours un problème d'indice qui se balade... Pour lui dire de recopier telle cellule du tableau dans telle cellule excel, il faut lui donner une direction précise (par exemple cellule A1, cellule B1664, etc...)
Donc la boucle for i = 1 to n recopier la cellule (k,1) du tableau dans la cellule Ai excel... ça passe pas ^^
Voila... J'espère que c'est à peu près clair !! (même si en relisant j'ai des doutes mais je vois pas trop comment expliquer ;) )
Si vous avez des idées... Merci d'avance !!
David
Merci à tous pour vos conseils.
J'ai finalement pu résoudre le problème un peu à la barbare...
En fait le problème ne venait apparament pas de la boucle "for" mais du tableau dans lequel je stocke les données... Je l'avais déclaré par la commande Dim Montableau(1 to n, 1 to 2) as Double (ou as je-sais-plus-trop-quoi), ce qui apparament posait problème.
J'ai finalement fait :
Dim Montableau as Variant
ReDim Montableau(1 to n, 1 to 2)
Et là ça marche (par contre je sais pas du tout pourquoi !! ;-) )
Pendant que j'y suis j'aurais encore une question...
Du coup mon programme permet de calculer une série de coordonnées que je stocke dans ce tableau (est-ce qu'elles sont justes ou pas ça c'est un autre débat :D)
Je souhaiterais recopier ce tableau sur une feuille excel déterminée pour les exploiter (en fait j'ai un doc excel avec plusieurs feuilles : Interface, Journal, etc...). Je veux donc récupérer les données dans les colonnes A à B d'excel (une colonne du tableau VBA correspondant à une colonne de données sour excel), dans la feuille "Journal".
J'ai bien trouvé la commande pour recopier UNE cellule du tableau dans UNE cellule excel... Bon le problème c'est que j'ai au bas mot 40.000 coordonnées à exporter... Ca fait un peu beaucoup pour le faire "à la main" !!! :)
Pour info j'ai tenté avec une boucle for avec cette commande, mais j'ai toujours un problème d'indice qui se balade... Pour lui dire de recopier telle cellule du tableau dans telle cellule excel, il faut lui donner une direction précise (par exemple cellule A1, cellule B1664, etc...)
Donc la boucle for i = 1 to n recopier la cellule (k,1) du tableau dans la cellule Ai excel... ça passe pas ^^
Voila... J'espère que c'est à peu près clair !! (même si en relisant j'ai des doutes mais je vois pas trop comment expliquer ;) )
Si vous avez des idées... Merci d'avance !!
David