élection multiple de cellules

Résolu/Fermé
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 - 3 déc. 2017 à 20:08
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 - 4 déc. 2017 à 19:21
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

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
Modifié le 4 déc. 2017 à 07:45
Bonjour
Par rapport à la demande initiale
Range ("L3 :L" & Dernligne") à la place deRange ("L3 :L&Dernligne")
Cdlt
1
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
3 déc. 2017 à 20:54
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
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
4 déc. 2017 à 07:20
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
4 déc. 2017 à 08:34
Bonjour,

Parce que la plage L2:L dernière ligne est vide
0
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
4 déc. 2017 à 09:17
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
4 déc. 2017 à 11:20
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
4 déc. 2017 à 14:45
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
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
4 déc. 2017 à 14:53
le second code devrait fonctionner tel quel !
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
4 déc. 2017 à 15:05
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
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
4 déc. 2017 à 19:21
C'est bon ça fonctionne.
Merci pour ton aide.
Cordialement
Mistral
0