XL 2019 Tirer formule après selection d'un case (case variable)

vba95

XLDnaute Nouveau
Bonjour à tous,

J'ai besoin de votre aide sur le fichier en pièce jointe.
Dans l'onglet Feuil1 je souhaite que ma macro copie/colle la date de l'onglet DATA sur la dernière case non vide la la ligne 3.
Ensuite sur la case du dessous je souhaite que ma macro inscrive la formule =SIERREUR(RECHERCHEV(A4;DATA!A:E;2;FAUX);"").
Jusque la tout va bien, je bloque sur la suite.
Ensuite, je souhaite que ma macro sélectionne la case avec la formule et la tire vers le bas.
Le problème avec la vba ci-dessous, est qu'elle ne tire la formule uniquement sur la colonne I et que ca ne fonctionne pas sur les autres colonnes quand ma vba précédente copie/colle la formule dans les autres colonnes.
Selection.AutoFill Destination:=Range("I4:I17")
Range("I4:I17").Select

Par avance merci de votre aide.
 

Pièces jointes

  • Classeur1.xlsm
    21.6 KB · Affichages: 11

Dudu2

XLDnaute Barbatruc
Bonjour,

Une macro à titre d'exemple. Pas besoin de formule en ligne 2.
VB:
Sub CopierDate()
    Dim PremièreColonneLibre As Integer

    PremièreColonneLibre = Cells(3, Columns.Count).End(xlToLeft).Column + 1

    With ThisWorkbook
        .Worksheets("DATA").Range("A1").Copy .Worksheets("Feuil1").Cells(2, PremièreColonneLibre)
        .Worksheets("Feuil1").Cells(2, PremièreColonneLibre).NumberFormat = "dddd"
        .Worksheets("DATA").Range("A1").Copy .Worksheets("Feuil1").Cells(3, PremièreColonneLibre)
        .Worksheets("Feuil1").Cells(3, PremièreColonneLibre).NumberFormat = "dd-mmm"
    End With
End Sub
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Maintenant si tu veux vraiment utiliser une formule:
Code:
Sub CopierDate()
    Dim PremièreColonneLibre As Integer
    Dim LettreColonne As String
   
    PremièreColonneLibre = Cells(3, Columns.Count).End(xlToLeft).Column + 1
    LettreColonne = Split(Cells(1, PremièreColonneLibre).Address, "$")(1)
   
    With ThisWorkbook
        .Worksheets("Feuil1").Cells(2, PremièreColonneLibre).FormulaLocal = _
            "=SI(" & LettreColonne & "3="""";"""";" & LettreColonne & "3)"
        .Worksheets("Feuil1").Cells(2, PremièreColonneLibre).NumberFormat = "dddd"
       
        .Worksheets("DATA").Range("A1").Copy .Worksheets("Feuil1").Cells(3, PremièreColonneLibre)
        .Worksheets("Feuil1").Cells(3, PremièreColonneLibre).NumberFormat = "dd-mmm"
    End With
End Sub
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Moi j'ai plutôt compris ça :
VB:
Sub Macro20()
   Dim Dt As Date, Col As Long
   Dt = Feuil1.[A1].Value
   Col = 3 + Dt - Feuil3.[C3].Value
   Feuil3.Cells(2, Col).Resize(2).Value = Dt
   With Intersect(Feuil3.Cells(4, Col).Resize(1000000), Feuil3.UsedRange)
      .FormulaR1C1 = "=IFERROR(INDEX(DATA!R4C2:R999C2,MATCH(RC1,DATA!R4C1:R999C1,0)),"""")"
      .Value = .Value
      End With
   End Sub
 

Discussions similaires

Réponses
18
Affichages
508

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 105
dernier inscrit
Joffrette