Boucle selon une condition

Résolu
Ecam39 Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   -  
Ecam39 Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   -
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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   Statut Membre Dernière intervention   9
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Non, ça marche mais c'est lourd
0
Ecam39 Messages postés 286 Date d'inscription   Statut Membre Dernière intervention   9
 
La seconde solution ?
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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   Statut Membre Dernière intervention   9
 
Le +1 est une valeur cumulée, il peut y avoir deja une valeur présente.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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