copier des lignes non vides d'un autre fichier et coller

zizoufan

XLDnaute Occasionnel
Bonjour à tous,

j'ai créé un bout de code en VBA me permettant de consolider sur un fichier qui s'appelle "consolidé" l'ensemble des données sur d'autres fichiers. Le seul problème que j'ai est que je n'arrive pas à paramétrer le code de telle façon à prendre toutes les lignes non vides dans les fichiers "assistance" et "test" avant de les coller.

Sub Consolidé()
' Consolidé Macro
Dim lgLigFinH As Long

Workbooks.Open ("C:\Users\PC\Desktop\test\assistance.xlsm")
Sheets("BD").Select
Range("A2:H6").Select
Selection.Copy
Windows("consolidé.xlsm").Activate
Sheets("Feuil3").Select
Range("A2").Select
ActiveSheet.Paste
Columns("B:B").EntireColumn.AutoFit
Columns("C:C").EntireColumn.AutoFit
Columns("D:D").EntireColumn.AutoFit
Columns("D:D").EntireColumn.AutoFit
Columns("F:F").EntireColumn.AutoFit
Columns("G:G").EntireColumn.AutoFit
Windows("assistance.xlsm").Activate
ActiveWindow.Close
Sheets("Feuil3").Select
' Dernière ligne vide dans la feuille Historique
lgLigFinH = Worksheets("Feuil3").Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
Workbooks.Open ("C:\Users\PC\Desktop\test\test.xlsm")
Sheets("BD").Select
Range("A2:H6").Select
Selection.Copy
Windows("consolidé.xlsm").Activate
Sheets("Feuil3").Select
Worksheets("Feuil3").Range("A" & lgLigFinH).Select
ActiveSheet.Paste


End Sub

Merci de votre aide
---------------------------

Je joins le fichier cible et les fichiers sources
 

Pièces jointes

  • consolidé.xlsm
    17.4 KB · Affichages: 35
  • assistance.xlsm
    29.1 KB · Affichages: 60
  • test.xlsm
    29.4 KB · Affichages: 61
  • test.xlsm
    29.4 KB · Affichages: 70
  • test.xlsm
    29.4 KB · Affichages: 71
C

Compte Supprimé 979

Guest
Re : copier des lignes non vides d'un autre fichier et coller

Salut Zizoufan

Voici un code avec annotations, j'espère qu'il sera asses compréhensible pour toi ;)
VB:
Sub Consolidé()
' Consolidé Macro
  Dim Dlig As Long
  Dim sPath As String
  Dim Ind As Integer, TabWbk() As String
  Dim Wbk As Workbook
  ' Comme on copie la même feuille de chaque classeur on peut utiliser un tableau de ceux-ci
  ' Initialiser le tableau des classeurs à ouvrir, à séparer par des virgules
  TabWbk = Split("assistance.xlsm,test.xlsm", ",")
  ' Chemin par défaut contenant les fichiers
  sPath = ThisWorkbook.Path & "\"
  ' Pour chaque valeur du tableau
  For Ind = 0 To UBound(TabWbk)
    ' Ouvrir le classeur
    Set Wbk = Workbooks.Open(sPath & TabWbk(Ind))
    ' Avec la feuille BD
    With Wbk.Sheets("BD")
      ' Récupérer le numéro de la dernière ligne remplie
      Dlig = .Range("A" & Rows.Count).End(xlUp).Row
      ' Copier l'ensemble des données
      ' Destination = Prochaine cellule vide de ce classeur
      .Range("A2:H" & Dlig).Copy Destination:=ThisWorkbook.Sheets("Feuil3").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
    End With
    Wbk.Close Savechanges:=False
  Next Ind
End Sub

A+
 

zizoufan

XLDnaute Occasionnel
Re : copier des lignes non vides d'un autre fichier et coller

Bonjour Bruno,

c'est parfait. Et oui j'ai bien compris la logique des choses :)
j'ai juste un petit souci c'est que je suis obligé de taper un mot de passe à chaque ouverture de fichier. Puisqu'il s'agit du même mot de passe pour tous les fichiers. Y a t il un moyen des les ouvrir d'un seul coup ??

Merci par avance
 
C

Compte Supprimé 979

Guest
Re : copier des lignes non vides d'un autre fichier et coller

Re,

Oui c'est dans le propriétés existantes
Code:
Set Wbk = Workbooks.Open(sPath & TabWbk(Ind), Password:="TonMdp")

A+
 

zizoufan

XLDnaute Occasionnel
Re : copier des lignes non vides d'un autre fichier et coller

Bruno,

Merci pour ta réactivité.
Pour ce dernier point je me suis mal exprimé. En fait si tu ouvres le fichier avec le macro de consolidé tu es obligé de taper un identifiant et un mot de passe. Y a t -il une manière de désactiver ces formulaires lors du consolidé ? Merci

Cordialement,
 

zizoufan

XLDnaute Occasionnel
Re : copier des lignes non vides d'un autre fichier et coller

Bruno,

les fichiers que je veux consolider contiennent tous des restrictions d'accès. Si je suis Manager j'accède à deux feuilles seulement, si je suis admin j'accède à toutes les feuilles. le manager accède à ses feuilles en tapant un identifiant et un mot de passe (géré par VBA)
Quand j'exécute la macro de consolidation, il ouvre effectivement les fichiers mais il me demande un identifiant et un mot de passe.
Cela existe il aussi dans les propriétés aussi comme tu l'as indiqué ci-haut ?
Set Wbk = Workbooks.Open(sPath & TabWbk(Ind), Password:="TonMdp")
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth