Faire un AutoFill sur Range(xx1:xy1)

Nurbo

XLDnaute Nouveau
Salut,


Après avoir pas mal cherché, je me vois dans l'obligation de donner ma langue au chat. :p

Je sais faire un AutoFill d'une cellule dans une colonne, idem dans une ligne. Par contre mon problème c'est de faire un AutoFill en ayant plusieurs cellules sélectionnées sur une même ligne.

Comme un exemple est plus parlant, je vous joint le fichier.


Je colle une extraction en A1 de l'onglet "données".

En cliquant sur TRAITER, la macro copie les données en violet de A4 à C31 (le 31 est variables puisque le fichier peut avoir plus de ligne).

Les données sont collées dans l'onglet "extract" à la suite des autres, de la colonne A à C.

Ensuite, le reste des données est rapatrié via RECHERCHEV car il n'y a pas forcément des données dans toutes les files, d'ailleurs dans l'exemple il n'y a pas de données en file jaune (onglet "données). Pour positionner la cellule au bon endroit je me sert d'un Find(what) et Offset.

J'arrive à dérouler la recherchev sur toute la ligne, dans l'exemple de D154 à J154.
Et c'est la que je bloque, je voudrais faire un AutoFill du Range(D154:J154) jusqu'à la dernière date de la colonne A, en ligne 181.
Bien sur les n° de ligne changent puisque chaque jour j'ajoute des données.

La macro dans le fichier s'arrête là où je suis bloqué, c'est à dire à l'autofill des cellules sélectionnées.

J'aurais pu faire autant de Find(what) + Offset pour chaque colonne, mais je suppose qu'il est possible de faire un AutoFill d'un Range non ?

Ou autres solution, je suis pas sectaire :cool:

Merci.
 

Pièces jointes

  • FluxPax - File Rouge.xlsm
    26.5 KB · Affichages: 28

camarchepas

XLDnaute Barbatruc
Re : Faire un AutoFill sur Range(xx1:xy1)

Bonjour ,

Que de Bruno sur ce Xld,

Peut être un prénom prédestiné , enfin , une première proposition

Surtout une simplification .

Si l'on veut avancer dans Excel , il faut un moment donné , ne plus utiliser les select copy à tout va .

Code:
Sub filerouge()

' Bruno 27-03-2015

Dim Firstcel As Long, Lastcel As Long, Derlign As Long, LigneFin As Long
Dim DateJour As Date
Dim Données As Worksheet, Extract As Worksheet

Set Données = Worksheets("Données")
Set Extract = Worksheets("Extract")

With Données
  Firstcel = .Range("A1").End(xlDown).Row
  Lastcel = .Range("A" & Rows.Count).End(xlUp).Row

  Derlign = Extract.Range("A" & Rows.Count).End(xlUp).Row + 1
  LigneFin = Derlign + (Lastcel - Firstcel)
  DateJour = Sheets("extract").Cells(1, 2)

  Extract.Range("A" & Derlign & ":C" & LigneFin) = .Range("A" & Firstcel & ":C" & Lastcel).Value
  Extract.Range("D" & Derlign & ":D" & LigneFin).FormulaR1C1 = _
        "=IF(ISNA(HLOOKUP(R1C,données!R3C3:R41C10,VLOOKUP(extract!RC2,données!R4C2:R41C11,10,FALSE),FALSE)),"""",HLOOKUP(R1C,données!R3C3:R41C10,VLOOKUP(extract!RC2,données!R4C2:R41C11,10,FALSE),FALSE))"
End With
    
End Sub
 
Dernière édition:

Nurbo

XLDnaute Nouveau
Re : Faire un AutoFill sur Range(xx1:xy1)

Salut Bruno !


Alors déjà merci de prendre le temps de répondre ;)

Sinon, pour ce qui est du select copy, j'y peux rien, je suis en train de suivre un thérapie mais c'est pas gagné !!!
Je sais bien que c'est "mal", mais vu ma petite maîtrise du VBA, je me sert souvent de ce que je connais.
L’inconvénient c'est que du coup je piétine....ou j'avance pas comme tu le dis si bien.??

Je viens d'essayer ta proposition, au début je croyais qu'il se passais rien...sauf que si, du coup j'ai appuyer 10 fois sur TRAITER.

Bref, j'ai répété le code pour les colonnes E à J et c'est bon ça fonctionne.

Un grand merci à toi et promis faut que je travaille le select copy pour le faire disparaître de mes codes !

@+

Bruno
 

Pièces jointes

  • FluxPax - File Rouge v2.xlsm
    36.6 KB · Affichages: 20

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 152
Membres
103 135
dernier inscrit
Imagine