Exécuter une macro sur une plage variable

Résolu/Fermé
RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021 - 17 févr. 2015 à 15:07
RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021 - 17 févr. 2015 à 19:12
Bonjour,

J'aimerais effectuer une petite modification sur une macro. N'étant pas une experte en rédaction de macro, je fais appel à vous.

Ma macro fait une recherche V et colle les valeurs. C'est pour aller chercher les heures travaillées par employé. Je me place dans la première cellule de la bonne journée, puis j'active la macro. J'utilise donc cette macro sur 5 colonnes différentes.

Sub recherchev()
' recherchev Macro
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC1,Classeur1!Tableau1#Data,12,FALSE)"
ActiveCell.Select
Selection.AutoFill Destination:=ActiveCell.Range("A1:A112"), Type:= _
xlFillValues
ActiveCell.Range("A1:A112").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub


J'aimerais que le Range("A1:A112") soit variable puisque mon tableau évolue toujours. Le Range devrait être "de la cellule active, jusqu'à la dernière ligne où il y a des informations dans la colonne A).

Des suggestions?

Merci :)

3 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 729
17 févr. 2015 à 16:34
Bonjour,

Si ta question est: trouver la dernière ligne de la colonne A, cette article te donnera la solution

http://www.excelabo.net/excel/derniere_cellule_vba
0
RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021 25
17 févr. 2015 à 17:10
Oui, j'avais commencé à expérimenter cette piste de solution, mais, comme vous pourrez le voir dans ma réponse à Gyrus, je ne peux pas appliquer directement cette solution.

Merci :)
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 729
17 févr. 2015 à 17:45
Et comme ceci:

  ActiveCell.Range("A1:A" & [A65536].End(xlUp).Row - 2).Select
1
RachelMartel Messages postés 435 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 24 mars 2021 25
17 févr. 2015 à 19:12
J'ai finalement réussi!

Sub recherchev()
'
' recherchev Macro
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC1,Classeur1!Tableau1#Data,12,FALSE)"

ActiveCell.AutoFill Destination:=ActiveCell.Range("A1:A" & ActiveCell.End(xlDown).Row - 8), Type:=xlFillValues
ActiveCell.Range("A1:A" & ActiveCell.End(xlDown).Row - 6).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub


Je dois avouer que je ne comprends par pourquoi je dois faire -6 à une place et -8 à l'autre étant donné que c'est la même plage... mais bon, au moins ça fonctionne! :)

Merci!
0