Boucle Do while et If
Résolu/Fermé
loicen73
Messages postés
32
Date d'inscription
mardi 27 mars 2018
Statut
Membre
Dernière intervention
16 avril 2018
-
5 avril 2018 à 09:29
Pinzou76 Messages postés 614 Date d'inscription dimanche 17 septembre 2017 Statut Membre Dernière intervention 25 février 2019 - 5 avril 2018 à 15:11
Pinzou76 Messages postés 614 Date d'inscription dimanche 17 septembre 2017 Statut Membre Dernière intervention 25 février 2019 - 5 avril 2018 à 15:11
A voir également:
- Xwxwxwxwv songs do 2023
- Bash do while ✓ - Forum Shell
- Logiciel money 2023 gratuit - Télécharger - Comptabilité & Facturation
- Faire fonctionner youtube song downloader sur umbutu ✓ - Forum Ubuntu
- Fichier do - Forum Windows
- Sxxxoxxxe lyrics 2023 youtube playlist video viral indonesia - Forum TV & Vidéo
3 réponses
Patrice33740
Messages postés
8561
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
15 mars 2025
1 779
5 avril 2018 à 09:46
5 avril 2018 à 09:46
Bonjour,
Il manque l'incrémentation de k !!!!
Il manque l'incrémentation de k !!!!
Sub bouclewhile2() Dim k As Currency k = 27 With Workbooks("Test boucles pour tronçons1.xlsm").Sheets("Bouclage") Do While .Cells(k, 2).Value Like " " If .Cells(k, 3).Value = 1 Then .Cells(k, 4).Value = .Cells(55, 2 * k - 50).Value Else .Cells(k, 4).Value = .Cells(55, 2 * k - 51).Value End If k = k + 1 Loop End With End Sub
Pinzou76
Messages postés
614
Date d'inscription
dimanche 17 septembre 2017
Statut
Membre
Dernière intervention
25 février 2019
192
5 avril 2018 à 09:36
5 avril 2018 à 09:36
Bonjour, il me semble que la syntaxe pour affecter/récupérer la valeur d'une cellule est
et non pas simplement
Bonne journée
Cells(i,j).Value
et non pas simplement
Cells(i,j)
Bonne journée
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 716
5 avril 2018 à 09:45
5 avril 2018 à 09:45
Bonjour Pinzou76,
Tu as tout à fait raison mais comme '.value' est la propriété par défaut cela fonctionne "malheureusement" sans la préciser.
Tu as tout à fait raison mais comme '.value' est la propriété par défaut cela fonctionne "malheureusement" sans la préciser.
Patrice33740
Messages postés
8561
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
15 mars 2025
1 779
>
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
5 avril 2018 à 10:04
5 avril 2018 à 10:04
Bonjour gb,
Entièrement d'accord avec le "malheureusement" !
Il est toujours préférable de préciser la propriété utilisée.
Depuis très longtemps, certains affirment que parfois, Excel utiliserait .Text au lieu de .Valeur.
Je n'ai jamais vu d'exemple qui le mette en évidence. En connaitrais-tu ???
Cordialement
Patrice
Entièrement d'accord avec le "malheureusement" !
Il est toujours préférable de préciser la propriété utilisée.
Depuis très longtemps, certains affirment que parfois, Excel utiliserait .Text au lieu de .Valeur.
Je n'ai jamais vu d'exemple qui le mette en évidence. En connaitrais-tu ???
Cordialement
Patrice
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 716
>
Patrice33740
Messages postés
8561
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
15 mars 2025
5 avril 2018 à 10:26
5 avril 2018 à 10:26
Bonjour Patrice,
certains affirment que parfois, Excel utiliserait .Text
Je ne t'apprendrais rien mais il ne faut pas se fier à ceux qui croient avoir découvert des failles qui souvent n'existent pas et sont dues à d'autres causes. Par contre je considère qu'en précisant la propriété utilisée, comme le suggérait Pinzou76, l'on n'a pas de surprise.
Bonne journée
certains affirment que parfois, Excel utiliserait .Text
Je ne t'apprendrais rien mais il ne faut pas se fier à ceux qui croient avoir découvert des failles qui souvent n'existent pas et sont dues à d'autres causes. Par contre je considère qu'en précisant la propriété utilisée, comme le suggérait Pinzou76, l'on n'a pas de surprise.
Bonne journée
loicen73
Messages postés
32
Date d'inscription
mardi 27 mars 2018
Statut
Membre
Dernière intervention
16 avril 2018
5 avril 2018 à 09:52
5 avril 2018 à 09:52
Merci pour cette info
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 716
5 avril 2018 à 09:41
5 avril 2018 à 09:41
Bonjour,
Déjà tu peux simplier ton code ainsi pour une lecture plus agréable et moins d'erreur de saisies
Cependant il ne va pas mieux fonctionner car ton 'k' n'évolue pas et comme l'on n'en connais pas la finalité c'est difficile d'interpréter. Apparemment 27 est une valeur mais tu l'utilises comme un n° de ligne.
Déjà tu peux simplier ton code ainsi pour une lecture plus agréable et moins d'erreur de saisies
Sub bouclewhile2() Dim k As Currency k = 27 With Workbooks("Test boucles pour tronçons1.xlsm").Sheets("Bouclage") Do While .Cells(k, 2) Like " " If .Cells(k, 3) = 1 Then .Cells(k, 4) = .Cells(55, 2 * k - 50) Else .Cells(k, 4) = .Cells(55, 2 * k - 51) End If Loop End With End Sub
Cependant il ne va pas mieux fonctionner car ton 'k' n'évolue pas et comme l'on n'en connais pas la finalité c'est difficile d'interpréter. Apparemment 27 est une valeur mais tu l'utilises comme un n° de ligne.
loicen73
Messages postés
32
Date d'inscription
mardi 27 mars 2018
Statut
Membre
Dernière intervention
16 avril 2018
Modifié le 5 avril 2018 à 09:55
Modifié le 5 avril 2018 à 09:55
Bonjour,
Merci pour cette simplification. En revanche je souhaite récupérer des valeurs de la feuille ECS pour les retranscrire dans la feuille Bouclage (le classeur reste le même).
En effet k est le numéro de la ligne. J'aimerais qu'il varie par pas de 1 jusqu'à ce qu'il y ait du texte dans la colonne B. Je pensais que cette variation par pas de 1 se réalisait automatiquement...
Pouvez vous me dire la procédure à suivre ?
Merci beaucoup
Merci pour cette simplification. En revanche je souhaite récupérer des valeurs de la feuille ECS pour les retranscrire dans la feuille Bouclage (le classeur reste le même).
En effet k est le numéro de la ligne. J'aimerais qu'il varie par pas de 1 jusqu'à ce qu'il y ait du texte dans la colonne B. Je pensais que cette variation par pas de 1 se réalisait automatiquement...
Pouvez vous me dire la procédure à suivre ?
Merci beaucoup
gbinforme
Messages postés
14946
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 716
5 avril 2018 à 10:31
5 avril 2018 à 10:31
RE
Attention à ton test
car il attend une cellule avec espace si tu veux une cellule vide c'est
Attention à ton test
Do While .Cells(k, 2) Like " "
car il attend une cellule avec espace si tu veux une cellule vide c'est
Do While .Cells(k, 2) = ""
loicen73
Messages postés
32
Date d'inscription
mardi 27 mars 2018
Statut
Membre
Dernière intervention
16 avril 2018
5 avril 2018 à 10:45
5 avril 2018 à 10:45
Je voudrais que la cellule contienne du texte. Est ce "*" ?
Patrice33740
Messages postés
8561
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
15 mars 2025
1 779
5 avril 2018 à 11:10
5 avril 2018 à 11:10
Pour tester si la cellule contient du texte :
Do While TypeName(.Cells(k, 2).Value) = "String"
loicen73
Messages postés
32
Date d'inscription
mardi 27 mars 2018
Statut
Membre
Dernière intervention
16 avril 2018
5 avril 2018 à 11:38
5 avril 2018 à 11:38
Merci beaucoup. Savez vous pourquoi le code ne fonctionne pas ? D'après @gbinforme k n'évolue pas...
5 avril 2018 à 14:50
Modifié le 5 avril 2018 à 15:11
il faut quand même la définir dans la déclaration de la boucle.
En vba, par défaut si vous ne la déclarez pas, elle est de 1 par défaut.
Ainsi
fonctionnera quand même et fera exactement la même chose que
Et si vous voulez compter de 3 en 3:
Step correspond à l'incrémentation effectuée à chaque tour de boucle.
Dans d'autres langages (ex: C++), vous devrez toujours déclarer le pas, même s'il est égal à 1.