Compter cellule à partir de..

BIOoOAG123 - 29 mars 2013 à 17:33
 fabiendag - 2 avril 2013 à 16:28
Bonjour à tous (Encore!) :)

Je me pose la question, est-il possible de compter les cellule à partir d'un certain point jusqu'à la dernière cellule non vide.

Par exemple:

For i = 2 To 1000 Step 1
If Range("B" & i).Value = "Partie Analyse" Then
'Compte les cellules à partir de cette cellule jusqu'a la dernière cellule remplie de cette colonne...
End If
Next

19 réponses

MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
29 mars 2013 à 18:02
Bojour !
Cells(Rows.Count, "B").End(xlUp)

renvoie la dernière cellule saisie de la colonne B,
après tout dépend du but recherché ...

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
Je connais ce code,
mais je souhaite qu'il me compte à partir de la cellule "Partie Analyse"
Qui est situé chaque fois à des lignes différentes dans la colonne B, d'ou le
For i= 2 to 1000 step i...

Jusqu'à la dernière ligne rempli du la colonne B. :)
0
Bonjour,
regarde ce bout de code et dis moi si c'est ce genre de chose que tu souhaites faire
Dim passe As Boolean
passe = False
For i = 2 To 1000
    If Cells(i, "B") = "partie analyse" Then
        passe = True
    End If
    If passe = True Then
        total = total + Cells(i, "A")
    End If
Next i



Fabien
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
2 avril 2013 à 13:36
Ce serait plus rapide en utilisant la méthode Find ...
___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je ne connais pas cette méthode. Je vais regarder ça de plus près! :)
Sinon j'ai fais comme ça en attendant

For i = Valeur To 2 Step -1
If Range("B" & i).Value "Partie Analyse" Or Range("B" & i).Value "Somme" Or Range("B" & i).Value = "Moyenne" Then
PartieAnalyse = PartieAnalyse - 1
End If
Next
0
pourquoi à la place du if et for tu fais pas avec un while
i = valeur
partieanalyse = valeur
while Range("B" & i).Value <> "Partie Analyse" Or Range("B" & i).Value <> "Somme" Or Range("B" & i).Value <> "Moyenne"
partieanalyse = partieanalyse - 1
Wend

Fabien
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
2 avril 2013 à 15:35
Sur le plan de la rapidité, While / Wend est obsolète,
lui préférer la structure Do ... Loop plus rapide.

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
explique moi la différence de rapidité entre les deux parce que là je vois pas pourquoi do loop serait plus rapide...


Fabien
0
J'ai juste trouvé ça moi :

La structure Do...Loop offre plus de flexibilité que While...End While, instruction (Visual Basic) car elle vous permet de mettre fin à la boucle lorsque condition n'a plus la valeur True ou lorsqu'elle prend la valeur True. Elle vous permet également de tester condition au début ou à la fin de la boucle.
0
Oui la je suis d'accord
on peut utiliser le do "instructions" loop while "condition". Dans ce cas, la boucle est exécutée une première fois, même si la condition n'est pas rempli
On peut aussi utiliser le do while "condition" ... "instructions" loop. Dans ce cas, la boucle n'est exécuté que si la condition est rempli. On se retrouve dans le cas du while... wend.


Fabien
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
2 avril 2013 à 15:48
Sur une petite échelle, franchement c'est peanuts !

Par contre sur une grand volume de données, pour l'avoir testé, il y en a une ...
Je l'ai lu sur un forum spécialisé anglo saxon et aussi sur une source Microsoft.

Tout dépend aussi de la conception du traitement réalisé au sein de la boucle ...
Récemment en changeant la structure et en optimisant le traitement,
j'ai réduit le temps d'exécution d'un procédure de 48 à moins de
3s !

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
ah ok... je comprend pas trop pourquoi c'est plus rapide... mais je te crois sur parole :)


Fabien
0
Dans ce cas, cela donne

i = valeur
partieanalyse = valeur
Do while Range("B" & i).Value <> "Partie Analyse" Or Range("B" & i).Value <> "Somme" Or Range("B" & i).Value <> "Moyenne"
partieanalyse = partieanalyse - 1
Loop




Fabien
0
En fait j'ai du mal à comprendre la structure DO... Loop

Elle lit comment le tableau?
0
MarcPL Messages postés 172 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 21 juillet 2013 2
2 avril 2013 à 15:58
J'ai peur que cela boucle à l'infini, non ?

Tel que le problème était exposé au début, une boucle était inutile ...
Puis en cours de route, la problématique a évolué !

J'aimerais bien qu'elle soit littéralement exposée clairement
afin d'apporter la meilleur solution ...

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
0
Elle fonctionne de la même manière que le while... wend
L'exemple que je t'ai donné avec le do... Loop juste avant fait exactement la meme chose que le while.. wend que je t'avais mis précédemment.


Fabien
0
Oui la forcément mon exemple est pas bon parce que le i ne change jamais donc effectivement c'est une boucle infini. J'ai juste repris son exemple en corrigeant la conditino dans la boucle


Fabien
0
Oui mais même le while... :D C'est un truc que je ne n'arrive pas à comprendre..
0
bah pour cela tu as l'aide vba qui est bien faite...


Fabien
0
Rejoignez-nous