VBA EXCEL-combiner fonction VLOOKUP et IF
anana49
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
anana49 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
anana49 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaiterais rechercher une valeur déterminée( Etape : Tour) dans ma première colonne "A" et à partir de cette valeur, copier une valeur définie (Tour) sur la 1ère cellule vide qu'il rencontre dans la même colonne. et ainsi de suite : recherche valeur déterminée(Etape : Port)=> cellule vide=>copier valeur définie (Port)...
Ci dessous mon code qui ne fonctionne pas mais je ne sais pas adapter une formule Recherchev() avec formule If.
Merci beaucoup pour votre aide.
Je souhaiterais rechercher une valeur déterminée( Etape : Tour) dans ma première colonne "A" et à partir de cette valeur, copier une valeur définie (Tour) sur la 1ère cellule vide qu'il rencontre dans la même colonne. et ainsi de suite : recherche valeur déterminée(Etape : Port)=> cellule vide=>copier valeur définie (Port)...
Ci dessous mon code qui ne fonctionne pas mais je ne sais pas adapter une formule Recherchev() avec formule If.
ActiveCell.FormulaR1C1 = _
"=IF(VLOOKUP(""Etape : Tour"",Rapports!A1,1,FALSE)<>"""",Sheets("Rapports").Range("A3").End(xlDown).Offset(1, 0) = "Tour")"
End if
Merci beaucoup pour votre aide.
5 réponses
-
Bonjour
Cette formuleActiveCell.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 -
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
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-
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".
-
-
-
Bonjour,
Teste ce codeSub 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
-
-
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..-
Re,
Tu peux ajouter comme ceciSub 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 -
Comment dois-je indiquer que je suis très satisfaite sur le forum ?