For each + if

Signaler
Messages postés
16
Date d'inscription
lundi 2 janvier 2012
Statut
Membre
Dernière intervention
5 mai 2012
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Salut à tous!
Je souhaite partir d'une cellule x et descendre d'un pas à chaque fois que la cellule contient une certaine donnée "date_debut" et afficher des résultats qui sont calculer par ma formule "formule". Malheureusement rien ne s'affiche quand je lance ma msgbox, quelqu'un voit pourquoi?


Range(x).Activate
i=0
redim formule (1 to 50)
For Each a In x.Range(x.adresse & ":A100")
        ActiveCell.Offset(1, 0).Select
        If date_debut = ActiveCell Then
        i = i + 1
        a = ActiveCell.Offset(0, 6).Value
        b = ActiveCell.Offset(0, 2).Value
   
        formule(i) = form(a,b)
        
        MsgBox ("résultat " & formule(i) & x) 'où x est une cellule 
        
       End If

     
    Next a

4 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
Bonjour,
On ne travaille pas à coups de Activate, select, ActiveCell etc ... (on ne cessera de le répéter).

Que cherches-tu à parcourir, finalement, sinon la colonne A, depuis la ligne de x jusqu'à la ligne 100 ?
On peut par ailleurs se demander à quoi, dans ton code, peut bien servir la variable i, que tu incrémentes sans jamais t'en servir !
Et cela s'exprime le plus simplement du monde, puisque la ligne de la cellule d'adresse x est Range(x).row ! et donc ===>>
suposons que la cellule x soit en 11ème ligne ===>>
For i = Range(x).Row To Range("A100").Row
....tes instructions par examen de la cellule Range("A" & i)
Next
est une boucle de 11 à 100 où il te sera donc possible de visiter (à chaque tour), la cellule Range("A" & i).


Compte tenu de ce que permet de découvrir le code que tu montres (une très grande insuffisance en matière des connaissances de base), je ne tiens pas à aller plus loin. Comble d'abord ces lacunes bien trop évidentes et qui concerne des points élémentaires.





________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
Sans compter que :
- dans ton code, tel que tu l'avais écrit et dont tu pourrais également te servir (boucle for each) :
a n'est pas définie. Il te suffirait de dire que c'est un Range et, dans ta boucle, a est chaque cellule du parcours.
regarde ce que fait ceci (exemple de petit test) et essaye au moins de comprendre :
Dim x As String, a As Range
x = Range("A3").Address
For Each a In Range(x & ":A10")
   MsgBox a.Address
Next

-
redim formule (1 to 50)

qu'est 50 ? Il devrait ne pas être un chiffre en dur, mais une variable (peut-être le nombre de lignes traitées ? ===>> si oui : ouvre ton aide VB6 sur le mot Rows et sa propriété Count !)
- dans
a = ActiveCell.Offset(0, 6).Value

a serait donc une valeur, alors que, ayant écrit plus haut :
For Each a In x.Range(x.adresse & ":A100")

C'était une cellule (un Range).
Ceci indique très nettement que tu n'as nulle part typé a, ou que tu l'as déclaré en Variant, ou que tu ne l'as déclaré nulle part (et que tu ne t'es en plus pas mis en Option Explicit).
-dans
= form(a,b)

--- Qu'est donc Form ? on ne le sait pas
--- Si un tableau : comment y mettre un indice a alors que a est une cellule (un range) ? Etonnant !

Tu comprends peut-être maintenant la raison de mon précédent message. On ne peut développer que sur des bases acquises et non "au hasard". Ces bases, il te faut les acquérir pas à pas (ce qu'est un objet, ce qu'est une déclaration de variable, etc ...)
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
16
Date d'inscription
lundi 2 janvier 2012
Statut
Membre
Dernière intervention
5 mai 2012

merci pour ta réponse!
ciao
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
Pas de quoi.
A bientôt, peut-être, lorsque tu seras fin prêt, du moins en ce qui concerne les fondements mêmes.
Bonne étude.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ