copie automatique de données de trois colonnes vers un autre fichier de manière auto

grasp

XLDnaute Nouveau
Bonjour à tous,

je souhaite copier automatiquement trois colonnes : nom, prénom et anniversaire en format jj/mm/aaaa qui sont dans plusieurs feuilles (une pour chaque de mes collègues et moi bien sur) sur un autre fichier excel qui va recueillir tout cela sur la même feuille et ce même si on intègre une nouvelle entrée au milieu des autres. J’espère bien vous avoir expliquer cela comme il faut...

De plus autre question, comment trier ces dates d'anniversaire par jour et mois et ce en triant aussi les noms bien sur...

D'avance un gros merci pour vos réponses. :)
Je suis à la recherche de cela depuis quelques temps déjà et mes maigres connaissances ou lectures ne m'ont pas donné le résultat.
 

Pièces jointes

  • Test.zip
    3.3 KB · Affichages: 23
  • Test.zip
    3.3 KB · Affichages: 23
  • Test.zip
    3.3 KB · Affichages: 24

titiborregan5

XLDnaute Accro
Re : copie automatique de données de trois colonnes vers un autre fichier de manière

Bonjour Grasp,

tu ne peux pas faire ça dans le même classeur? avec une feuille récap en début de classeur par exemple?

Sinon tu vas devoir jouer avec les workbooks...

en reprenant ma 1ère idée, la feuille 1 étant la feuille récap, voir PJ


Pour le tri, j'ai été obligé de rajouter 3 colonnes (année mois jour (mois jour auraient suffit))...
A+
 

Pièces jointes

  • fichier source.xls
    44 KB · Affichages: 36
  • fichier source.xls
    44 KB · Affichages: 42
  • fichier source.xls
    44 KB · Affichages: 41

job75

XLDnaute Barbatruc
Re : copie automatique de données de trois colonnes vers un autre fichier de manière

Bonjour grasp, bienvenue sur XLD, salut titiborregan5,

Téléchargez les 2 fichiers joints dans le même répertoire (par exemple le bureau).

La macro dans le ThisWorkbook du fichier Anniversaire(1).xls :

Code:
Private Sub Workbook_Activate()
Dim chemin$, fichier$, ouv As Boolean, lig&, w As Worksheet, h&
chemin = Me.Path & "\" 'à adapter si nécessaire
fichier = "fichier source.xls" 'à adapter
Application.ScreenUpdating = False
On Error Resume Next
'---si le fichier source est fermé on l'ouvre---
If IsError(Workbooks(fichier)) Then
  Workbooks.Open chemin & fichier
  ouv = True
End If
On Error GoTo 0
lig = 3 '1ère ligne de restitution
With Feuil1 'CodeName de la feuille de restitution
  .Range("A3:C" & Rows.Count).ClearContents 'RAZ
  '---récupération des données---
  For Each w In Workbooks(fichier).Worksheets
    h = w.Range("A" & w.Rows.Count).End(xlUp).Row - 2
    If h > 0 Then
      .Cells(lig, 1).Resize(h, 3) = w.[A3].Resize(h, 3).Value
      lig = lig + h
    End If
  Next
  '---colonne auxiliaire D---
  For lig = 3 To lig - 1
    .Cells(lig, 4) = DateSerial(2004, Month(.Cells(lig, 3)), Day(.Cells(lig, 3)))
  Next
  .Range("A2:D" & lig).Sort .[D2], xlAscending, .[C2], Header:=xlYes
  .[D:D].ClearContents
End With
'---fermeture du fichier s'il a été ouvert---
If ouv Then
  Application.EnableEvents = False
  Workbooks(fichier).Close False
  Application.EnableEvents = True
End If
End Sub
A+
 

Pièces jointes

  • fichier source.xls
    34 KB · Affichages: 30
  • Anniversaire(1).xls
    34 KB · Affichages: 39
  • fichier source.xls
    34 KB · Affichages: 24
  • Anniversaire(1).xls
    34 KB · Affichages: 35
  • fichier source.xls
    34 KB · Affichages: 28
  • Anniversaire(1).xls
    34 KB · Affichages: 33

job75

XLDnaute Barbatruc
Re : copie automatique de données de trois colonnes vers un autre fichier de manière

Re,

Les tableaux avaient 3 colonnes mais il est aussi simple, dans la macro, de paramétrer le nombre de colonnes :

Code:
Private Sub Workbook_Activate()
Dim chemin$, fichier$, col%, coldat%, lig&, i&, ouv As Boolean, w As Worksheet, h&
chemin = Me.Path & "\" 'à adapter si nécessaire
fichier = "fichier source.xls" 'à adapter
col = 4 'nombre de colonnes paramétré
coldat = 3 'colonne des dates
lig = 3 '1ère ligne de données
i = lig
Application.ScreenUpdating = False
On Error Resume Next
'---si le fichier source est fermé on l'ouvre---
If IsError(Workbooks(fichier)) Then
  Workbooks.Open chemin & fichier
  ouv = True
End If
On Error GoTo 0
With Feuil1 'CodeName de la feuille de restitution
  .Cells(i, 1).Resize(.Rows.Count - i + 1, col).ClearContents 'RAZ
  '---récupération des données---
  For Each w In Workbooks(fichier).Worksheets
    h = w.Range("A" & w.Rows.Count).End(xlUp).Row - lig + 1
    If h > 0 Then
      .Cells(i, 1).Resize(h, col) = w.[A3].Resize(h, col).Value
      i = i + h
    End If
  Next
  '---colonne auxiliaire col + 1---
  For i = lig To i - 1
    .Cells(i, col + 1) = DateSerial(2004, Month(.Cells(i, coldat)), Day(.Cells(i, coldat)))
  Next
  .Cells(lig, 1).Resize(i - lig, col + 1).Sort .Columns(col + 1), _
    xlAscending, .Columns(coldat), Header:=xlNo
  .Columns(col + 1).ClearContents
End With
'---fermeture du fichier s'il a été ouvert---
If ouv Then
  Application.EnableEvents = False
  Workbooks(fichier).Close False
  Application.EnableEvents = True
End If
End Sub
Fichier (2).

A+
 

Pièces jointes

  • fichier source.xls
    35 KB · Affichages: 35
  • fichier source.xls
    35 KB · Affichages: 35
  • fichier source.xls
    35 KB · Affichages: 35
  • Anniversaire(2).xls
    35 KB · Affichages: 25
  • Anniversaire(2).xls
    35 KB · Affichages: 27
  • Anniversaire(2).xls
    35 KB · Affichages: 31
Dernière édition:

grasp

XLDnaute Nouveau
Re : copie automatique de données de trois colonnes vers un autre fichier de manière

Ouch ben il va falloir que je demande d'autre formation moi, merci bien à vous deux.
Par contre, je ne sais comment intégrer cela à mon fichier initial, désolé, mes formations excel ne sont que des bases, encore merci pour votre disponibilité.
Grasp
 

Discussions similaires

Statistiques des forums

Discussions
312 112
Messages
2 085 411
Membres
102 885
dernier inscrit
AISSOU