Appliquer une macro à partir d'une cellule

Bonjour,

J'ai besoin de votre aide pour optimiser un fichier de travail mais je suis débutante et ne parvient pas au résultat que je souhaite.

Je cherche à faire une macro pour créer une recherche V qui s'applique à différente colonne.

Je fais ma recherche V en cellule H2 puis l'applique à toute la colonne H et effectue une autre recherche V en cellule U2 et l'applique à toute la colonne U. Jusqu'ici je m'en suis sortie avec l'enregistreur.

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7],MOIS,4,0)"
Range("H2").Select
Selection.AutoFill Destination:=Range("H2:H606")
Range("H2:H606").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("U2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-20],MOIS,5,0)"
Range("U2").Select
Selection.AutoFill Destination:=Range("U2:U606")
Range("U2:U606").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A1").Select
Application.CutCopyMode = False
End Sub

La ou cela ne fonctionne pas c'est que en me positionnant en cellule I2 je souhaiterais que ces mêmes recherche V s'applique aux colonnes I et V et ainsi de suite si je me positionne en J2 que les formules s'applique aux colonnes J et W.

J'espère que mes explications sont claires, merci par avance de votre aide.

3 réponses

  1. Bonjour,

    Pourrais-tu joindre un exemple de ton fichier afin que l'on puisse mieux comprendre ta demande car là c'est un peu abstrait. Tu peux utiliser le site gratuit suivant pour poster ton fichier : https://www.cjoint.com/

    A bientôt

    Jc
    0
    1. Bonjour,

      Voici le lien vers mon document.

      https://www.cjoint.com/c/HIrlH0cqxTk

      Merci d'avance de votre aide.
      0
    2. Je dois être un peu limité mais même avec le fichier je ne parviens pas a comprendre ce que tu cherches à faire au juste... :-s
      0
  2. Bonjour,

    Remplace les trois premières lignes par :

      ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7],MOIS,4,0)"
      ActiveCell.AutoFill Destination:=ActiveCell.Resize(605)
    


    Fais pareil pour la seconde formule.

    Cordialement.

    Daniel
    0
    1. Bonjour,

      Merci pour votre aide mais mon problème n'est pas solutionné. J'ai peut être pas modifié les informations correctement.

      le code donne ça :
      ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7],MOIS,4,0)"
      ActiveCell.AutoFill Destination:=ActiveCell.Resize(605)
      Range("H2:H606").Select
      Selection.Copy
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      Range("U2").Select
      Application.CutCopyMode = False
      ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-20],MOIS,5,0)"
      ActiveCell.AutoFill Destination:=ActiveCell.Resize(605)
      Range("U2:U606").Select
      Selection.Copy
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      Range("A1").Select
      Application.CutCopyMode = False

      Ma recherche V fonctionne très bien en colonne H et U, mais quand je me positionne en colonne I, elle ne fonctionne pas alors que je voudrais qu'elle se reproduise en colonne I et V.

      Cordialement
      0
    2. Peut-être :

      Sub Macro2()
      '
      ' Macro2 Macro
      '
       ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-7],MOIS,4,0)"
       ActiveCell.AutoFill Destination:=ActiveCell.Resize(605)
       ActiveCell.Resize(605).Copy
       Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
       ActiveCell.Offset(, 13).Select
       Application.CutCopyMode = False
       ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-20],MOIS,5,0)"
       ActiveCell.AutoFill Destination:=ActiveCell.Resize(605)
       ActiveCell.Resize(605).Copy
       Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
       Range("A1").Select
       Application.CutCopyMode = False
      End Sub
      


      Daniel
      0
    3. Merci du temps passé.

      Les formules se reporte bien dans les colonnes I et V mais par contre la formule n'évolue pas RC[-7] doit devenir RC[-8] et RC[-20] doit devenir RC[-21] mais je ne sais pas comment faire.

      Aimy
      0
    4. ActiveCell.FormulaR1C1 = "=VLOOKUP(RC1,MOIS,4,0)"
       ActiveCell.AutoFill Destination:=ActiveCell.Resize(605)
       ActiveCell.Resize(605).Copy
       Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
       ActiveCell.Offset(, 13).Select
       Application.CutCopyMode = False
       ActiveCell.FormulaR1C1 = "=VLOOKUP(RC1,MOIS,5,0)"
       ActiveCell.AutoFill Destination:=ActiveCell.Resize(605)
       ActiveCell.Resize(605).Copy
       Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
       Range("A1").Select
       Application.CutCopyMode = False


      Daniel
      0
    5. Et pour simplifier :

      Sub Macro3()
      ActiveCell.Resize(605).FormulaR1C1 = "=VLOOKUP(RC1,MOIS,4,0)"
      ActiveCell.Resize(605).Copy
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      ActiveCell.Offset(, 13).Resize(605).FormulaR1C1 = "=VLOOKUP(RC1,MOIS,5,0)"
      ActiveCell.Resize(605).Copy
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      Range("A1").Select
      Application.CutCopyMode = False
      End Sub
      0
  3. J'ai trouvé la solution grâce à de l'aide sur un autre forum.

    Je partage si cela peut en aider d'autres.

    Option Explicit 'oblige à déclarer les variables

    Sub essai()
    Dim décal%, mois%, f As Worksheet, taille&, i%
    décal = 2
    mois = Month(Range("zone").Item(1, 3))
    Set f = Sheets(1)
    taille = f.[A65000].End(xlUp).Row - 1
    For i = 0 To 5
    With f.Cells(2, mois + décal).Resize(taille).Offset(, 13 * i)
    .Formula = "=vlookup(A2,zone," & 4 + i & ",false)"
    .Value = .Value
    End With
    Next
    End Sub

    Merci encore
    0