élection multiple de cellules [Résolu]

Mistral_13200 416 Messages postés mardi 5 août 2008Date d'inscription 9 décembre 2017 Dernière intervention - 3 déc. 2017 à 20:08 - Dernière réponse : Mistral_13200 416 Messages postés mardi 5 août 2008Date d'inscription 9 décembre 2017 Dernière intervention
- 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
Afficher la suite 
416Messages postés mardi 5 août 2008Date d'inscription 9 décembre 2017 Dernière intervention

10 réponses

Répondre au sujet
Frenchie83 1711 Messages postés lundi 6 mai 2013Date d'inscription 11 décembre 2017 Dernière intervention - Modifié par Frenchie83 le 4/12/2017 à 07:45
+1
Utile
Bonjour
Par rapport à la demande initiale
Range ("L3 :L" & Dernligne") à la place deRange ("L3 :L&Dernligne")
Cdlt
Commenter la réponse de Frenchie83
Patrice33740 6316 Messages postés dimanche 13 juin 2010Date d'inscription 11 décembre 2017 Dernière intervention - 3 déc. 2017 à 20:54
0
Utile
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


Commenter la réponse de Patrice33740
Mistral_13200 416 Messages postés mardi 5 août 2008Date d'inscription 9 décembre 2017 Dernière intervention - 4 déc. 2017 à 07:20
0
Utile
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
Patrice33740 6316 Messages postés dimanche 13 juin 2010Date d'inscription 11 décembre 2017 Dernière intervention - 4 déc. 2017 à 08:34
Bonjour,

Parce que la plage L2:L dernière ligne est vide
Commenter la réponse de Mistral_13200
Mistral_13200 416 Messages postés mardi 5 août 2008Date d'inscription 9 décembre 2017 Dernière intervention - 4 déc. 2017 à 09:17
0
Utile
1
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
Patrice33740 6316 Messages postés dimanche 13 juin 2010Date d'inscription 11 décembre 2017 Dernière intervention - 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
Commenter la réponse de Mistral_13200
Mistral_13200 416 Messages postés mardi 5 août 2008Date d'inscription 9 décembre 2017 Dernière intervention - 4 déc. 2017 à 14:45
0
Utile
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
Patrice33740 6316 Messages postés dimanche 13 juin 2010Date d'inscription 11 décembre 2017 Dernière intervention - 4 déc. 2017 à 14:53
le second code devrait fonctionner tel quel !
Commenter la réponse de Mistral_13200
Patrice33740 6316 Messages postés dimanche 13 juin 2010Date d'inscription 11 décembre 2017 Dernière intervention - 4 déc. 2017 à 15:05
0
Utile
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
 

Commenter la réponse de Patrice33740
Mistral_13200 416 Messages postés mardi 5 août 2008Date d'inscription 9 décembre 2017 Dernière intervention - 4 déc. 2017 à 19:21
0
Utile
C'est bon ça fonctionne.
Merci pour ton aide.
Cordialement
Mistral
Commenter la réponse de Mistral_13200