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

  • Initiateur de la discussion Initiateur de la discussion grasp
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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

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

Dernière édition:
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour