Ifs imbriqués

Fermé
caravanevba Messages postés 10 Date d'inscription vendredi 7 novembre 2014 Statut Membre Dernière intervention 20 mai 2016 - Modifié par caravanevba le 7/11/2014 à 17:48
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 - 7 nov. 2014 à 20:33
Bonjour,

Je suis debutante en vba donc la macro n'est pas forcément optimale, dslée :-) (En plus elle ne marche pas, d'où ma presence ici :-)

Objectif :Identifier quel est le parfum d'une glace mais la fraise peut être totalement inexistante. J'ai donc dans l'idée de checher le code pour le parfum fraise, s'il n'existe pas on laisse la cellule vide. Si par contre il existe, on renseigne la colone : Est ce fraise ou choloat ou plus de glace.
Ensuite, deuxième boucle (jai pensé que ce serait plus simple de le décomposer en 2 boucles. Si la cellule est vide (ce qui veut dire qu'il n'y avait pas le code fraise) alors on ne compare que chocolat ou plus de glace.

Voici le code, Il ne marche pas, je pense qu'il ne manque pas grand chose, mais je n'arrive pas à trouver le bug...


'Glace avec fraise existante
'CLGA = chocolat
'CLPA = fraise

Dim CLPA As Range

Set CLPA = Cells.Find(What:="code pour fraise", after:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, searchdirection:=xlNext, MatchCase:=False, SearchFormat:=False)
For i = 2 To fin
If CLPA Is Nothing Then
Range("AH" & i).Value = ""
Else
Dim colclpa As Integer
colclpa = CLPA.Column
Dim CLGA As Range
Set CLGA = Cells.Find(What:="code pour chocolat", after:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, searchdirection:=xlNext, MatchCase:=False, SearchFormat:=False)
Dim colclga As Integer
colclga = CLGA.Column
Range("AH1").Select
ActiveCell.Formula = "parfum de glace"
fin = Range("A1").End(xlDown).Row
Range("AH2:AH" & fin).Select


If Cells(i, colclga) = "Yes" Then Range("AH" & i).Value = "chocolat" Else
If Cells(i, colclpa) = "Yes" Then Range("AH" & i).Value = "fraise" Else
If Cells(i, colclpa) <> "Yes" And Cells(i, colclga) <> "Yes" Then Range("AH" & i).Value = "plus de glace"

End If


Next i

'glace avec fraise inexistant
'CLG = chocolat


Dim CLG As Range

Set CLG = Cells.Find(What:="code pour chocolat", after:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, searchdirection:=xlNext, MatchCase:=False, SearchFormat:=False)

Dim colclg As Integer
colclg = CLG.Column

fin = Range("A1").End(xlDown).Row

Range("AH2:AH" & fin).Select

For i = 2 To fin

If Range("AH" & i) = "" And Cells(i, colclg) = "Yes" Then Range("AH" & i).Value = "chocolat" Else
If Range("AH" & i) = "" And Cells(i, colclg) <> "Yes" Then Range("AH" & i).Value = "plus de glace"



Next i






Voilà merci à tous pour votre aide :-)
A voir également:

2 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
7 nov. 2014 à 18:26
Bonjour,

Pourriez mettre le fichier a dispo sur https://www.cjoint.com/ car sur que ca marche pas, mais sans le fichier pas possible de vous aider
0
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
7 nov. 2014 à 20:33
For i = 2 To fin


Est-ce que fin est déjà initialisé ailleurs ?
Je vois plus loin que vous affecté la valeur de fin, mais au moment du FOR qu'en est-il?

Tel que f894009 le mentionne, ce serait plus facile avec le fichier Excel.
Si la macro ne s'exécute pas du tout, quel est le message d'erreur.
Et si elle s'exécute en partie, à partir de quel ligne ça crash ?
0