Formule plage.offset vba

Résolu
julia Namor Messages postés 532 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour,

Je voudrais étendre la formule de la cellule cible (plage .offset(-2,0) jusqu'à "ET7"
tout en sachant que " plage" est une variable;

merci de votre aide



dim plage as range

plage.Offset(-2, 0).Select

Selection.AutoFill Destination:=Range("plage.Offset(-2, 0):ET7"), Type:=xlFillDefault



3 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Quelques RQ

    Sub cycle()
    Dim plage As Range
    Dim ror As Range
    Dim ii As Long
    For Each plage In Range("$I$9:$p$9")
      With plage
        If plage.Value = "LU" Then
           ' Set plage = .Offset(0, 0)  ' utile ?
           Set ror = plage.Offset(-2, 0)
           plage.Offset(-2, 0).FormulaLocal = "=SI(f7<MAX($C:$C);f7+1;1)"
           ror.Select
           ror.AutoFill Destination:=Range(ror.Address & ":ei7"), Type:=xlFillDefault
        End If
      End With
    Next plage
    ' à partir de là, il y a un pb
    ' les points (.) devant Cells, Columns, ....
    ' suppose que ces objets sont des 'enfants' de ????
    ' il faudrait un With quelque chose, peut être un nom de feuille ?
    For ii = .Cells(7, .Columns.Count).End(xlToLeft).Column To 2 Step -1
      If UCase(.Cells(7, ii)) = UCase(.Cells(7, ii - 1)) Then
        .Cells(7, ii - 1) = ""
        .Range(Cells(7, ii), Cells(7, ii - 1)).Merge
      End If
    Next ii
    End Sub

    Cdlmnt
    1
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    A adapter (en supposant que plage représente une cellule)

    Dim plage As Range
    Set plage = Range("B5").Offset(-2, 0)
    plage.AutoFill Destination:=Range(plage.Address & ":B20"), Type:=xlFillDefault

    Cdlmnt
    0
  3. julia Namor Messages postés 532 Statut Membre 33
     
    Grand grand merci à toi , j'ai réussi à adapter le code et cerise sur le gateau j'y ai associé une boucle pour fusionner les valeurs identiques .
    je te laisse voir le code et me le corriger s'il ya des redondances ou circuits plus courts.
    merci beaucoup


    sub cycle
    Dim plage As Range
    Dim ror As Range

    For Each plage In Range("$I$9:$p$9")
    With plage
    If plage.Value = "LU" Then
    Set plage = .Offset(0, 0)
    Set ror = plage.Offset(-2, 0)

    plage.Offset(-2, 0).FormulaLocal = "=SI(f7<MAX($C:$C);f7+1;1)"

    ror.Select
    ror.AutoFill Destination:=Range(ror.Address & ":ei7"), Type:=xlFillDefault
    Else
    End If
    End With
    Next
    Dim ii As Long
    For ii = .Cells(7, .Columns.Count).End(xlToLeft).Column To 2 Step -1
    If UCase(.Cells(7, ii)) = UCase(.Cells(7, ii - 1)) Then
    .Cells(7, ii - 1) = ""
    .Range(Cells(7, ii), Cells(7, ii - 1)).Merge
    End If
    Next ii
    end sub
    0