Compilation donnée - fin de boucle si aucune entrée
Bonjour à tous !
Veuillez m'excuser pour cette demande qui semblera peut être stupide, voila, j'ai récupéré ce code que j'ai modifié pour pouvoir compiler des données.
En gros les clients rentre les données dans un tableau, puis je compile les données de tous les fichiers client présents dans le même fichier pour n'en faire qu'un.
Problème: les clients n'ont pas le même nombre de données à rentrer chacun en fait, donc je souhaite savoir comment faire pour que mon code ne prenne pas en compte juste une ligne (ici de A1 à Q1, car je n'avais qu'une ligne de données), mais toutes les lignes qu'ils rentrent! Genre de A1 à X lignes tant qu'il y a une valeur indiquée...
Voici le VBA utilisé:
Sub ImporterDonneesFichier()
Dim CC As Workbook 'déclare la variable CC (Classeur Cible)
Dim OC As Worksheet 'déclare la variable OC (Onglet Cible)
Dim F As String 'déclare la variable F (Fichiers)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim PL As Range 'déclare la variable PL (PLage)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Set CC = ThisWorkbook 'définit le classeur cible CC
Set OC = CC.Sheets("Client_Compilation") 'définit l'onglet cible OC (à adapter)
Worksheets("Client_Compilation").Rows(5 & ":" & Worksheets("Client_Compilation").Rows.Count).Delete 'suprimer anciennes lignes
F = Dir(CC.Path & "\*.xls?") 'définit le fichier F (premier fichier Excel du dossier contenant ce classeur)
Do While F <> "" 'boucle tant qu'il existe des fichiers
If Not F = CC.Name Then 'condition : si F n'est pas ce classeur
Workbooks.Open (CC.Path & "\" & F) 'ouvre le fichier F ' <----------- correction
Set CS = ActiveWorkbook 'définit le classeur source CS
Set OS = CS.Sheets("Client_Planning") 'définit l'onglet source OS (à adapter)
Set PL = OS.Range("A1:Q1") '<------------------------------------------------DEFINIR LIGNES & COLONNES A COPIER DU DOCUMENT SOURCE!!!!!!!!!!!!!!!!!!
Set DEST = IIf(OC.Range("A5").Value = "", OC.Range("A5"), OC.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
PL.Copy DEST 'copy la plage PL dans DEST
CS.Close 'ferme le classeur source
End If 'fin de la condition
F = Dir 'redéfinit le fichier F (prochain fichier Excel du dossier contenant ce classeur)
Loop 'boucle
End SubC'est assez perturbant car j'ai plus, l'habitude du JAVA etc.... :/ genre la je ne vois pas la condition à utilisé pour créer une boucle tant qu'il y a des données :/
Bonsoir
Peut être comme ça
Dim dernLigne as integer
Dim derncol as integer
dernLigne = Cells(Rows.Count, 1).End(xlUp).Row
derncol = Cells(1, Columns.Count).End(xlToLeft).Column
Set PL = OS.Range( OS.Cells(1,1), OS.cells(dernLigne, derncol))alors ça ne copie plus que dans un coin et les premières cellules de chaque lignes :D
Avec un fichier ce serait plus clair