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
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.

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

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
Bonjour

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
0
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
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
0
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
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".
0
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
https://www.cjoint.com/c/HIlqy3JMtJ0

Voici mon fichier, encore merci..
0
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
Bonjour,

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
0
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
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..
0
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
Re,

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.
0

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
Comment dois-je indiquer que je suis très satisfaite sur le forum ?
0