élection multiple de cellules

Résolu
Bonsoir à tous,

Dans une macro, réalisée grâce à l’enregistreur de macro j’ai ceci :

    Range("L2").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC2,Données!R3C2:R6C5,4,FALSE)"
Selection.Copy
Range("L3:L106").Select ' voir pour mettre dernière ligne.
ActiveSheet.Paste


ça fonctionne correctement.

Je calcule également le N° de la dernière ligne de la feuille qui est stocké « Dernligne »
Je souhaiterais remplacer :
Range ("L3 :L106").select par Range ("L3 :L&Dernligne").select

Et là Excel n’est pas content …
Pouvez-vous m’aider.
D’avance merci.
Mistral

7 réponses

  1. C'est bon ça fonctionne.
    Merci pour ton aide.
    Cordialement
    Mistral
    0
    1. Re,

      Si tu préfères garder DernLigne et supprimer la sécurité si la feuille est vide :
      Option Explicit
      Sub test()
      Dim DernLigne As Long
      
        With ActiveSheet
          ' Calcul derniere ligne occupée.
          DernLigne = .Range("A" & .Rows.Count).End(xlUp).Row
          ' Mise en place formule
          .Range("L2:L" & DernLigne).FormulaR1C1 = _
            "=VLOOKUP(RC2,Données!R3C2:R6C5,4,FALSE)"
        End With
          
      End Sub
       

      0
      1. Bonjour Patrice,

        Désolé je n’avais pas compris ta demande d’explications supplémentaires. Je remets donc la partie du code concerné :

        ' Calcul derniere ligne occupée.
        DernLigne = Range("A" & Rows.Count).End(xlUp).Row

        ' Création formule répertoire d'arrivée.
        Range("L2").Select ‘ Sélection de la cellule contenant la formule.
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "=VLOOKUP(RC2,Données!R3C2:R6C5,4,FALSE)" ‘ Création de la formule.
        Selection.Copy ‘ Copie de la formule.
        Range("L3:L106").Select ' Sélection de la zone de collage.
        ActiveSheet.Paste ‘ Collage de la formule.


        La feuille sur laquelle s’applique ce code n’a pas toujours le même nombre de ligne. Je souhaiterais donc remplacer "Range("L3:L106").Select" par quelque chose qui tienne compte du nombre exacte de lignes dans la feuille, de manière à coller que sur le nombre de ligne nécessaire.

        En espérant avoir été plus claire.
        Cordialement.
        Mistral
        0
        1. le second code devrait fonctionner tel quel !
          0
      2. Bonjour Frenchie,

        Merci à toi pour ta réponse.

        Je viens d'essayer mais j'ai une erreur :

        Erreur de compilation : Attendu séparateur de liste ou )

        Je cherche toujours mais je n'ai pas trouvé la solution.
        Cordialement
        Mistral
        0
        1. Re,

          Comme tu est avare d'explication sur la façon de déterminer la dernière ligne, voici un code à adapter :
          Option Explicit
          Sub test()
          Dim r As Range
          
            With ActiveSheet
              Set r = .Range("A" & .Rows.Count).End(xlUp) 'Adapter la colonne
              If r.Row < 3 Then
                Set r = .Range("L2")
              Else
                Set r = .Range("L2:L" & r.Row)
              End If
              r.FormulaR1C1 = "=VLOOKUP(RC2,Données!R3C2:R6C5,4,FALSE)"
            End With
              
          End Sub
          
          0
      3. Bonjour
        Par rapport à la demande initiale
        Range ("L3 :L" & Dernligne") à la place deRange ("L3 :L&Dernligne")
        Cdlt
        1
        1. Bonjour Patrice,
          Tout d’abord merci à toi d’avoir pris le temps de te pencher sur ma question.
          Je viens de faire un essai mais ça ne fonctionne pas.

          J’obtiens : Erreur 91 Variable objet ou variable de bloc With non définie.

          Je cherche pourquoi.
          Cordialement
          Mistral
          0
          1. Bonjour,

            Parce que la plage L2:L dernière ligne est vide
            0
        2. Bonjour,

          Essaies :
          Option Explicit
          Sub test()
          Dim r As Range
          
            With ActiveSheet
              Set r = Intersect(.UsedRange, .Range("L2:L" & .Rows.Count))
              r.FormulaR1C1 = "=VLOOKUP(RC2,Données!R3C2:R6C5,4,FALSE)"
            End With
              
          End Sub
          


          0