Boucle selon une condition

Résolu/Fermé
Ecam39 Messages postés 286 Date d'inscription jeudi 12 janvier 2012 Statut Membre Dernière intervention 16 mars 2024 - 8 mai 2014 à 17:34
Ecam39 Messages postés 286 Date d'inscription jeudi 12 janvier 2012 Statut Membre Dernière intervention 16 mars 2024 - 10 mai 2014 à 11:19
Bonjour,

Je souhaite incrémenter des valeurs +1 si une condition est remplie :

Dans la colonne A, j'ai des valeurs
Dans la colonne B, j'inscris un petit "x"

Je souhaiterai faire une boucle, et dans cette boucle je rajoute un +1 sur les colonnes C et D.




2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 9/05/2014 à 06:55
Bonjour,

démarrage en ligne 1 et "petite croix" avec x minuscule
à adapter à ton classeur: spécifications manquantes dans ta demande
Option Explicit
'----------
Sub incrementer_CD()
Dim Derlig As Integer, Lig As Integer

Application.ScreenUpdating = False
Derlig = Columns("A").Find("*", , , , , xlPrevious).Row
For Lig = 1 To Derlig
Cells(Lig, "C") = Cells(Lig, "C") + ((Cells(Lig, "A") <> "") * (Cells(Lig, "B") = "x"))
Cells(Lig, "D") = Cells(Lig, "D") + ((Cells(Lig, "A") <> "") * (Cells(Lig, "B") = "x"))
Next
End Sub

Michel
0
Ecam39 Messages postés 286 Date d'inscription jeudi 12 janvier 2012 Statut Membre Dernière intervention 16 mars 2024 9
9 mai 2014 à 15:23
Merci pour ton aide

J'ai un peu cherché et j'ai aussi trouvé ça, si ça peut t'intéresser.
Les deux fonctionnes :

Sub selection()

Dim selection As Long

For selection = 1 To 30
If Cells(selection, 7) = "x" Then
Cells(selection, 5) = Cells(selection, 5) + 1
Cells(selection, 6) = Cells(selection, 6) + 1

End If

Next


End Sub
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
9 mai 2014 à 17:43
Non, ça marche mais c'est lourd
0
Ecam39 Messages postés 286 Date d'inscription jeudi 12 janvier 2012 Statut Membre Dernière intervention 16 mars 2024 9
9 mai 2014 à 19:28
La seconde solution ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
10 mai 2014 à 08:57
Oui, car elle oblige à mettre un If... avec une redondance (+1)
alors qu'un test logique (booléen) renvoie 1 ou 0 directement ( au format vrai ou faux sans le ET ou le OU car ET-->* et OU ''> +)

au passage:
"selection" est un terme VBA réservé ce qui créé une ambiguité

Bon WE :o)
0
Ecam39 Messages postés 286 Date d'inscription jeudi 12 janvier 2012 Statut Membre Dernière intervention 16 mars 2024 9
10 mai 2014 à 09:37
Le +1 est une valeur cumulée, il peut y avoir deja une valeur présente.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 10/05/2014 à 09:44
Cells(Lig, "C") + ((Cells(Lig, "A") <> "") * (Cells(Lig, "B") = "x"))

tétu ?

mais tu fais ce que tu veux... pourquoi alors demander de l'aide sur les forums ???

A tout hasard, je te signale que je teste toujours mes propositions
0