If...Then...Elseif...Then...End If

J

JCA06

Guest
Bonjour le Forum,

Je me permet de replacer une réponse que j'ai faite à David parce qu'elle contenait une question :

Je vous replace le contexte : dans une plage A2 à H25, David mettait une couleur de fond dans certaines cellules et voulait ensuite compter celles dont la couleur était celle de K5 et K6

Re: additionner des couleurs
Auteur: JCA06 (195.78.3.---)
Date: 26-07-04 16:31

Rebonjour David, le Forum,

J'ai voulu profiter de ton exemple pour essayer de rédiger le code dont tu avais besoin, mais une fois de plus je m'aperçois que je suis encore un gros nul ! Bon, je m'en suis tout de même tiré :

Option Explicit

Sub Compte_couleur()

Dim i As Integer, j As Integer, C As Long, C1 As Long, C2 As Long
Dim Nb1 As Integer, Nb2 As Integer

C1 = Range("K5").Interior.ColorIndex
C2 = Range("K6").Interior.ColorIndex

For i = 2 To 25
For j = 1 To 8
C = Cells(i, j).Interior.ColorIndex
Select Case C
Case C1
Nb1 = Nb1 + 1
Case C2
Nb2 = Nb2 + 1
End Select
Next j
Next i

Range("L5").Value = Nb1
Range("L6").Value = Nb2
End Sub

Ce qui m'énerve, c'est que je ne suis pas arrivé à rédiger ce code avec un If...Then...Elseif...Endif
J'avais essayé comme ceci, à la place du bloc Select Case...End Select :
If C = C1 Then Nb1 = Nb1 + 1
ElseIf C = C2 Then Nb2 = Nb2 + 1
End If

Et ça ne fonctionne pas ! Et je n'arrive pas à comprendre pourquoi !!!!

Si quelqu'un peut m'expliquer, avant que je renonce aux If... qui sont pourtant bien pratiques..

A plus
 
@

@+Thierry

Guest
Bonjour Jean Charles, le Forum

Ouh la la, pas bon pour la digestion de se torturer l'esprit de la sorte !! lol

Hum, moi je ferai perso, comme ça :
If C = C1 Then Nb1 = Nb1 + 1
If C = C2 Then Nb2 = Nb2 + 1

That's all folk !!!

Et sinon on pourrait faire ceci :

If C = C1 Then
Nb1 = Nb1 + 1
ElseIf C = C2 Then
Nb2 = Nb2 + 1
End If


Et on pourrait aussi faire encore un truc comme ceci :

If C = C1 Then
Nb1 = Nb1 + 1
Else
If C = C2 Then
Nb2 = Nb2 + 1
End If
End If

Bon Aprèm
@+Thierry
 
J

JCA06

Guest
Hé ben oui ! C'est bien ça !!

Merci Pascal, je suis content que tu m'ais expliqué ça !!

Mais encore une fois, je constate que l'aide est bien faite uniquement s'il s'agit d'un pense bête !

Maintenant que tu me le dis, je constate effectivement que la syntaxe présentée dans l'aide respecte cette présentation, mais je n'ai trouvé nul part un message clair qui expliquait le problème dans ma rédaction.

Vu le temps que j'ai passé à chercher, je promet de bien faire attention quand une syntaxe sera présentée dans l'aide !!

Merci encore.
 
P

Pascal76

Guest
re

on peut rajouter un gros merci à Thierry aussi qui a été plus loin que moi encore avec d'autres solutions

Sinon quand tu ecris un if ... then puis le reste sur la même ligne c'est que ton if se termine à la fin de ligne Donc si tu veux mettre un else ou un elseif il faut impérativement que ton code qui suit le Then soit sur la ligne d'en dessous . (chias pas chi ch'est très clais cha)

Pascal
 
J

JCA06

Guest
Salut Pascal, Thierry, le Forum,

Visiblement, j'ai mis du temps à rédiger mon post, car je n'avais pas vu les messages de Thierry !

Pascal, ton explication est un peu comme l'aide apportée par la touche F1 : c'est très clair si tu connais le truc, et incompréhensible si tu découvre quelque chose ! Comme quoi, c'est pas si facile d'expliquer !!

J'aimerai trouver un bouquin qui permettrait de comprendre les opérations de base et qui expliquerait les différentes possibilités avec leurs avantages et leurs inconvénients, ou leur champ d'application et leur limites, par exemple sur les points suivants :
- sélection de plage : techniques, pièges et astuces
- les boucles : comment choisir entre For..Next, For Each, Do Loop, While...
- les tests ;
- les tableaux (salut Yeahoo !)
- les structures : événementielles, private ou public, static ou pas,...
- sans oublier les userform !!

Si vous savez où on peut trouver ça, je suis preneur !
Et tant pis pour le beach volley féminin (message orienté à destination d'une population Belgio-Monégasque qui fait l'unanimité sur ce forum !)

A plus.
 
@

@+Thierry

Guest
Bonjour JCA, Pascal, le Forum

Euh je n'ai jamais vraiment trouvé de bouquins qui récapitulent tout ce que tu viens d'énoncer...

En fait ce sont les heures de vols, les Forums comme celui-ci, ou le MPFE que j'ai eu un temp un peu suivi, qui m'ont appris le plus...

Et le plus radical dans mon apprentissage, ce sont les innombrables nuits blanches à galérer pour faire marcher une modeste petite appli...

Voilà, sinon comme je dis toujours les ouvrages de John Walkenbach sont toujours interrressants.

Bon Courage ! et bon Beach Volley quand même !

@+Thierry
 

Discussions similaires

Réponses
4
Affichages
401

Statistiques des forums

Discussions
314 450
Messages
2 109 721
Membres
110 551
dernier inscrit
Khyolyanna