élection multiple de cellules

Résolu
Mistral_13200 Messages postés 649 Statut Membre -  
Mistral_13200 Messages postés 649 Statut Membre -
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. Frenchie83 Messages postés 2254 Statut Membre 339
     
    Bonjour
    Par rapport à la demande initiale
    Range ("L3 :L" & Dernligne") à la place deRange ("L3 :L&Dernligne")
    Cdlt
    1
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
  3. Mistral_13200 Messages postés 649 Statut Membre 4
     
    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. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Bonjour,

      Parce que la plage L2:L dernière ligne est vide
      0
  4. Mistral_13200 Messages postés 649 Statut Membre 4
     
    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. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mistral_13200 Messages postés 649 Statut Membre 4
     
    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. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      le second code devrait fonctionner tel quel !
      0
  7. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
  8. Mistral_13200 Messages postés 649 Statut Membre 4
     
    C'est bon ça fonctionne.
    Merci pour ton aide.
    Cordialement
    Mistral
    0