Appliquer une macro à partir d'une cellule

Aimyg Messages postés 13 Statut Membre -  
Aimyg Messages postés 13 Statut Membre -
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. titeufdu89 Messages postés 387 Statut Membre 38
     
    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. Aimyg Messages postés 13 Statut Membre
       
      Bonjour,

      Voici le lien vers mon document.

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

      Merci d'avance de votre aide.
      0
    2. titeufdu89 Messages postés 387 Statut Membre 38
       
      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. danielc0 Messages postés 2192 Date d'inscription   Statut Membre Dernière intervention   287
     
    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. Aimyg Messages postés 13 Statut Membre
       
      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. danielc0 Messages postés 2192 Date d'inscription   Statut Membre Dernière intervention   287
       
      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. Aimyg Messages postés 13 Statut Membre
       
      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. danielc0 Messages postés 2192 Date d'inscription   Statut Membre Dernière intervention   287
       
      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. danielc0 Messages postés 2192 Date d'inscription   Statut Membre Dernière intervention   287
       
      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. Aimyg Messages postés 13 Statut Membre
     
    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