Ifs imbriqués
caravanevba
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
PlacageGranby Messages postés 393 Date d'inscription Statut Membre Dernière intervention -
PlacageGranby Messages postés 393 Date d'inscription Statut Membre Dernière intervention -
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 :-)
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:
- Ifs imbriqués
- Ext2 ifs - Télécharger - Pilotes & Matériel
- Codes SQL multiples imbriqués dans Access en vba ✓ - Forum MySQL
2 réponses
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
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
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 ?