Trouver la1ère ligne à remplir par Autofill

ExcelVBA

XLDnaute Nouveau
Bonjour

Je cherche à copier-coller en VBA des blocs à l'aide de la fonction Autofill sur la dernière cellule vide de ma colonne mais j'ai un soucis avec la destination dans mon code.

Mon bout de code est le suivant :
Worksheets("Liste").Select
Set Societe = Range("A2:A" & nbLignes + 1)
Societe.AutoFill Destination:=Range("A" & Rows.Count, 1).End(xlDown)(2)

J'vois pas trop comment j'peux faire.

Si quelqu'un a une idée.

Par avance merci.
 

Pièces jointes

  • IMPORT_Nouveaux_Matériels.xlsm
    167.3 KB · Affichages: 13

ExcelVBA

XLDnaute Nouveau
Super c'est presque ca ! :D
J'ai juste la colonne B qui doit être différente sur chacune de mes copies de mes plages.
La valeur dans ma colonne B sera celle que je vais chercher dans la cellule de ma feuille "Chantier" ( colonne A)

For i = 0 To nbChantier

'Copie du code chantier
Worksheets("Chantiers").Select
Chantier = Range("A" & i + 1)

'Copie des lignes de la société et Chantiers
'Pour les 1ères lignes
If i = 0 Then
Worksheets("Liste").Select
For j = 1 To nbLignes
Range("A" & j + 1) = Societe
Range("B" & j + 1) = Chantier
Next j
End If

'Pour les lignes suivantes
If i >= 1 Then

'Copie du bloc
Worksheets("Liste").Select
Set Plage = Range("A2:H" & [A:H].Find("*", , , , xlByRows, xlPrevious).Row)
Plage.Copy Cells(Plage.Row + Plage.Rows.Count, 1)
 

ExcelVBA

XLDnaute Nouveau
C'est ce qui rempli les première lignes à l'aide de la feuille Chantier dans lequel je vais chercher ma valeur :


04MATBEG804403698403699POMPE IMMERGEE FS6110 - AFEC - AF 18362901/08/201931/12/2030TRUE
04MATBEG80440B04840B048CAMION BENNE 4 X 2 VOLVO FMX11 R370-VME-YV2X1E1A0KB91225701/08/201931/12/2030TRUE
04MATBEG804040B007040B007PELLE HYD. / CH. VOLVO EC 380D-VME-27177301/08/201931/12/2030TRUE
04MATBEG80440B00940B009POSTE A SOUDER AUTONOME -GENSET-292489701/08/201931/12/2030TRUE
04MATBEG804040B023040B023PELLE HYD. / PN. VOLVO EW205D-VME-VCEW205DL0028049401/08/201931/12/2030TRUE
04MATBEG804040B028040B028AUTOBETONNIERE FIORI DBX35-FIORI-BX14M0036301/08/201931/12/2030TRUE
04MATBEG80540B04840B048CAMION BENNE 4 X 2 VOLVO FMX11 R370-VME-YV2X1E1A0KB91225701/08/201931/12/2030TRUE
04MATBEG805040B007040B007PELLE HYD. / CH. VOLVO EC 380D-VME-27177301/08/201931/12/2030TRUE
04MATBEG80540B00940B009POSTE A SOUDER AUTONOME -GENSET-292489701/08/201931/12/2030TRUE
04MATBEG805040B023040B023PELLE HYD. / PN. VOLVO EW205D-VME-VCEW205DL0028049401/08/201931/12/2030TRUE
04MATBEG805040B028040B028AUTOBETONNIERE FIORI DBX35-FIORI-BX14M0036301/08/201931/12/2030TRUE
04MATBG501G40B04840B048CAMION BENNE 4 X 2 VOLVO FMX11 R370-VME-YV2X1E1A0KB91225701/08/201931/12/2030TRUE
04MATBG501G040B007040B007PELLE HYD. / CH. VOLVO EC 380D-VME-27177301/08/201931/12/2030TRUE
04MATBG501G40B00940B009POSTE A SOUDER AUTONOME -GENSET-292489701/08/201931/12/2030TRUE
04MATBG501G040B023040B023PELLE HYD. / PN. VOLVO EW205D-VME-VCEW205DL0028049401/08/201931/12/2030TRUE
04MATBG501G040B028040B028AUTOBETONNIERE FIORI DBX35-FIORI-BX14M0036301/08/201931/12/2030TRUE
 

ExcelVBA

XLDnaute Nouveau
Au départ, j'ai ce tableau dans ma feuille "Liste" :
1602078175649.png


Ensuite dans le code je vais lire la valeur A1 et B1 dans ma feuille "Chantier" :
1602078287950.png


Que je colle dans les colonnes A et B :
1602078370265.png


Ensuite je dois utiliser ce même bloc mais avec la colonne B qui change pour chaque bloc. Ce sera la cellule A2 (BEG805) de ma feuille chantier pour obtenir :
1602078571789.png


Ensuite je dois aller chercher la valeur suivante de la cellule A2 (BG501G) de ma feuille chantier pour obtenir :
1602078728317.png
 

danielco

XLDnaute Accro
Essaie:

VB:
  Dim Plage As Range, Res As String
  Set Plage = Range("A2:H" & [A:H].Find("*", , , , xlByRows, xlPrevious).Row)
  Res = Plage.Resize(, 1).Offset(, 1)(Plage.Rows.Count)
  Res = Application.Index([Chantiers!A:A], Application.Match(Res, [Chantiers!A:A], 0) + 1)
  Plage.Copy Cells(Plage.Row + Plage.Rows.Count, 1)
  Cells(Plage.Row + Plage.Rows.Count, 2).Resize(Plage.Rows.Count) = Res

Daniel
 

ExcelVBA

XLDnaute Nouveau
J'ai pas tout compris au code mais on y est presque, il m'a retourné ce résultat, je pense que c'est un problème avec la boucle. Il a cumulé les 2 (BEG804 et BEG805) pour remplir la 3ème occurrence (BG501G) :

1602084717674.png


au final il m'a renseigné 655361 lignes.

J'ai ce code :
For i = 0 To nbChantier

'Copie du code chantier
Worksheets("Chantiers").Select
Chantier = Range("A" & i + 1)

'Copie des lignes de la société et Chantiers
'Pour les 1ères lignes
If i = 0 Then
Worksheets("Liste").Select
For j = 1 To nbLignes
Range("A" & j + 1) = Societe
Range("B" & j + 1) = Chantier
Next j
End If

'Pour les lignes suivantes
If i >= 1 Then

Worksheets("Liste").Select

'Copie du bloc
Set Plage = Range("A2:H" & [A:H].Find("*", , , , xlByRows, xlPrevious).Row)
Plage.Copy Cells(Plage.Row + Plage.Rows.Count, 1)

Res = Plage.Resize(, 1).Offset(, 1)(Plage.Rows.Count)
Res = Application.Index([Chantiers!A:A], Application.Match(Res, [Chantiers!A:A], 0) + 1)

Plage.Copy Cells(Plage.Row + Plage.Rows.Count, 1)
Cells(Plage.Row + Plage.Rows.Count, 2).Resize(Plage.Rows.Count) = Res

End If

Next i

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
314 017
Messages
2 104 587
Membres
109 084
dernier inscrit
mizab