VBA EXCEL-combiner fonction VLOOKUP et IF
Fermé
anana49
Messages postés
20
Date d'inscription
jeudi 12 juillet 2018
Statut
Membre
Dernière intervention
20 décembre 2018
-
Modifié le 12 sept. 2018 à 11:26
anana49 Messages postés 20 Date d'inscription jeudi 12 juillet 2018 Statut Membre Dernière intervention 20 décembre 2018 - 12 sept. 2018 à 11:24
anana49 Messages postés 20 Date d'inscription jeudi 12 juillet 2018 Statut Membre Dernière intervention 20 décembre 2018 - 12 sept. 2018 à 11:24
5 réponses
M-12
Messages postés
1332
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
18 février 2025
285
Modifié le 12 sept. 2018 à 11:26
Modifié le 12 sept. 2018 à 11:26
Bonjour
Cette formule
est tirée d'une macro enregistrée modifiée
donc le END IF à la fin est inutile
Mais la formule ne fonctionnera pas vu comme elle est structurée
Cette formule
ActiveCell.FormulaR1C1 = _ "=IF(VLOOKUP(""Etape : Tour"",Rapports!A1,1,FALSE)<>"""",Sheets("Rapports").Range("A3").End(xlDown).Offset(1, 0) = "Tour")"
est tirée d'une macro enregistrée modifiée
donc le END IF à la fin est inutile
Mais la formule ne fonctionnera pas vu comme elle est structurée
anana49
Messages postés
20
Date d'inscription
jeudi 12 juillet 2018
Statut
Membre
Dernière intervention
20 décembre 2018
Modifié le 12 sept. 2018 à 11:26
Modifié le 12 sept. 2018 à 11:26
Bonjour M-12,
Oui je sais mais il faut que je combine 2 fonctions et je ne sais pas.. d'où mon problème..
J'ai refait un bout de code mais je souhaite que s'il trouve la valeur définie ( "Etape : Tour") dans la colonne A, il ajoute à la 1ère cellule vide une autre valeur ( "Tour") et toujours à partir de la valeur définie.
ensuite il faut rechercher une autre valeur définie ("Etape : Port") et à partir de cette valeur, récupérer la cellule vide et ajouter une autre valeur ("Port") etc....
Merci de m'aider
Oui je sais mais il faut que je combine 2 fonctions et je ne sais pas.. d'où mon problème..
J'ai refait un bout de code mais je souhaite que s'il trouve la valeur définie ( "Etape : Tour") dans la colonne A, il ajoute à la 1ère cellule vide une autre valeur ( "Tour") et toujours à partir de la valeur définie.
ensuite il faut rechercher une autre valeur définie ("Etape : Port") et à partir de cette valeur, récupérer la cellule vide et ajouter une autre valeur ("Port") etc....
Merci de m'aider
Sub test6() i = 3 With Sheets("TEST2") If Sheets("TEST2").Cells(i, 1).Value = "Etape : Tour" Then .Cells(i, "A").End(xlDown).Offset(1, 0).Value = "Tour" End If If Sheets("TEST2").Cells(i, 1).Value = "Etape : Port" Then .Cells(i, "A").End(xlDown).Offset(1, 0).Value = "Port" End If End With End Sub
M-12
Messages postés
1332
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
18 février 2025
285
11 sept. 2018 à 17:01
11 sept. 2018 à 17:01
Re,
Un p’tit classeur avec 10/15 données serait mieux pour régler le soucis :yum:
Tu vas dans https://www.cjoint.com/
Tu cliques sur "PARCOURIR" pour sélectionner ton fichier
Clic le bouton "CREER LE LIEN"
Clic droit quand le lien est créé "COPIER LE LIEN"
Sur ton message Clic droit "Coller".
Un p’tit classeur avec 10/15 données serait mieux pour régler le soucis :yum:
Tu vas dans https://www.cjoint.com/
Tu cliques sur "PARCOURIR" pour sélectionner ton fichier
Clic le bouton "CREER LE LIEN"
Clic droit quand le lien est créé "COPIER LE LIEN"
Sur ton message Clic droit "Coller".
anana49
Messages postés
20
Date d'inscription
jeudi 12 juillet 2018
Statut
Membre
Dernière intervention
20 décembre 2018
11 sept. 2018 à 18:26
11 sept. 2018 à 18:26
https://www.cjoint.com/c/HIlqy3JMtJ0
Voici mon fichier, encore merci..
Voici mon fichier, encore merci..
M-12
Messages postés
1332
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
18 février 2025
285
Modifié le 12 sept. 2018 à 11:27
Modifié le 12 sept. 2018 à 11:27
Bonjour,
Teste ce code
Teste ce code
Sub test6() Dim i%, Dl% Dl = Range("A" & Rows.Count).End(xlUp).Row For i = 3 To Dl With Sheets("TEST2") If Sheets("TEST2").Cells(i, 1).Value = "Etape : Tour" Then .Cells(i, "A").End(xlDown).Offset(1, 0).Value = "Tour" ElseIf Sheets("TEST2").Cells(i, 1).Value = "Etape : Port" Then .Cells(i, "A").End(xlDown).Offset(1, 0).Value = "Port" ElseIf Sheets("TEST2").Cells(i, 1).Value = "Etape : Château" Then .Cells(i, "A").End(xlDown).Offset(1, 0).Value = "Château" End If End With Next i End Sub
anana49
Messages postés
20
Date d'inscription
jeudi 12 juillet 2018
Statut
Membre
Dernière intervention
20 décembre 2018
12 sept. 2018 à 09:59
12 sept. 2018 à 09:59
Bonjour,
Un grand merci pour ton aide M-12, le code fonctionne parfaitement.
Par contre, j'avais oublié une étape et en relançant le code, il est revenu au début "Etape : Tour" et a indiqué "Tour" dans la cellule vide or c'était une autre étape (Etape : Ecole).
Est-il possible d'indiquer une condition supplémentaire ?
Comme si : il ne trouve pas l'étape que la cellule reste vide ?
Si pas de solution, je ferais en sorte de ne pas oublier... A bientôt..
Un grand merci pour ton aide M-12, le code fonctionne parfaitement.
Par contre, j'avais oublié une étape et en relançant le code, il est revenu au début "Etape : Tour" et a indiqué "Tour" dans la cellule vide or c'était une autre étape (Etape : Ecole).
Est-il possible d'indiquer une condition supplémentaire ?
Comme si : il ne trouve pas l'étape que la cellule reste vide ?
Si pas de solution, je ferais en sorte de ne pas oublier... A bientôt..
M-12
Messages postés
1332
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
18 février 2025
285
Modifié le 12 sept. 2018 à 11:27
Modifié le 12 sept. 2018 à 11:27
Re,
Tu peux ajouter comme ceci
Mais si des étapes se rajoute au fur et à mesure, il faut faire autrement et créer un petit tableau contenant les différentes etapes et faire une double boucle
Tu peux ajouter comme ceci
Sub test6() Dim i%, Dl% Dl = Range("A" & Rows.Count).End(xlUp).Row For i = 3 To Dl With Sheets("TEST2") If Sheets("TEST2").Cells(i, 1).Value = "Etape : Tour" Then .Cells(i, "A").End(xlDown).Offset(1, 0).Value = "Tour" ElseIf Sheets("TEST2").Cells(i, 1).Value = "Etape : Port" Then .Cells(i, "A").End(xlDown).Offset(1, 0).Value = "Port" ElseIf Sheets("TEST2").Cells(i, 1).Value = "Etape : Château" Then .Cells(i, "A").End(xlDown).Offset(1, 0).Value = "Château" ElseIf Sheets("TEST2").Cells(i, 1).Value = "Etape : Ecole" Then .Cells(i, "A").End(xlDown).Offset(1, 0).Value = "Ecole" End If End With Next i End Sub
Mais si des étapes se rajoute au fur et à mesure, il faut faire autrement et créer un petit tableau contenant les différentes etapes et faire une double boucle
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
anana49
Messages postés
20
Date d'inscription
jeudi 12 juillet 2018
Statut
Membre
Dernière intervention
20 décembre 2018
12 sept. 2018 à 11:24
12 sept. 2018 à 11:24
Comment dois-je indiquer que je suis très satisfaite sur le forum ?