Selection.AutoFill Colonne à coordonées dynamiques [Résolu]

Signaler
Messages postés
5
Date d'inscription
vendredi 1 octobre 2010
Statut
Membre
Dernière intervention
7 janvier 2011
-
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
-
Bonjour,

J'ai besoin de faire un Selection.AutoFill dans une colonne en fonction de la longueur de ses colonnes voisines (qui peuvent varier).

Un RECHERVEV() me retourne une date (jj/mm/aa) dans la cellule H125, et je veux l'étendre plus loin dans la colonne en l'arrêtant à la ligne correspondant à la dernière de la colonne voisine.

J'ai déjà essayé ceci:

i = Range("E7").End(xlDown).Offset(0, 1).Select
Selection.AutoFill Destination:=Range("H125:H" & i), Type:=xlFillDefault

Donc à moins qu'il y ait une autre solution, mon problème vient du fait que je ne sais pas déclarer la variable i correctement.

Merci.

4 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
oups !

Dim i As Range
set i = Range("E7").End(xlDown).Offset(0, 1)
i.AutoFill Destination:=Range("H125:H" & i.row), Type:=xlFillDefault
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

oui effectivement un peu de mélange autour de ta variable i

2 solutions a partir de ton idée:

-ne nécessite pas de variable
Range("E7").End(xlDown).Offset(0, 1).Select
Selection.AutoFill Destination:=Range("H125:H" & i), Type:=xlFillDefault 


-via une variable
Dim i As Range
set i = Range("E7").End(xlDown).Offset(0, 1)
i.AutoFill Destination:=Range("H125:H" & i), Type:=xlFillDefault


Dans ce deuxième cas la variable i est dimensionné pour contenir un objet de type range. Cela peut donc etre une cellule ou une plage de cellules qui sont des objets. Comme toute variable de type objet le signe = ne suffit pas pour lui assigner un objet. Pour cela il faut utiliser "Set"

Préfère la deuxième solution a la première car cela évite les sélections source d'erreurs de lenteur et d'épilepsie.

A+
Messages postés
5
Date d'inscription
vendredi 1 octobre 2010
Statut
Membre
Dernière intervention
7 janvier 2011

Ok merci niquel!

Mais ce que je ne comprend pas dans le premier cas, c'est pourquoi la variable i n'est pas déclarée?

J'avais effectivement essayé la seconde solution, mais cela ne marchant pas à cause d'un problème de syntaxe j'avais abandonné l'idée.
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
oui effectivement j'ai zapé la variable dans le premier cas qui aurait du s'ecrire :

Range("E7").End(xlDown).Offset(0, 1).Select
Selection.AutoFill Destination:=Range("H125:H" & selection.row), Type:=xlFillDefault 


une solution intermediaire pour repondre à ta question:

Dim i As Long
Range("E7").End(xlDown).Offset(0, 1).Select
i = Selection.row 'i prend ici, comme valeur, le numero de ligne de la selection
Selection.AutoFill Destination:=Range("H125:H" & i), Type:=xlFillDefault 


A+