For each + if

Medorico Messages postés 16 Date d'inscription lundi 2 janvier 2012 Statut Membre Dernière intervention 5 mai 2012 - 26 avril 2012 à 23:53
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 27 avril 2012 à 13:00
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
27 avril 2012 à 07:49
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
27 avril 2012 à 08:29
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
0
Medorico Messages postés 16 Date d'inscription lundi 2 janvier 2012 Statut Membre Dernière intervention 5 mai 2012
27 avril 2012 à 11:48
merci pour ta réponse!
ciao
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
27 avril 2012 à 13:00
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
0
Rejoignez-nous