Copier automatiquement un tableau vers un autre classeur à la première ligne vide

ELSONCe

XLDnaute Junior
Bonjour à tous,

Pour avoir été très bien renseigné la dernière fois je me permets de poster une nouvelle demande.

Je cherche à copier automatiquement un tableau (1) vers un autre classeur où se trouve ce même tableau (2) à la première ligne vide. Le but étant d'avoir différents utilisateurs qui sauvegarderont leurs données dans le tableau (1) et qu'une sauvegarde automatique se fasse sur le tableau (2) même si celui-cui est fermé. La résultante étant un tableau (2) qui permette de visualiser l'ensemble des données des différents utilisateurs.

Pour le moment je ne suis parvenu qu'à une pseudo macro avec collage spécial... Pas très heureux :)

Espérant avoir été assez clair, je remercie par avance celui ou celle qui saura résoudre ce léger problème car n'est pas excellien qui veut ;-)

Cordialement :eek:
 

Pièces jointes

  • TABLEAU (1).zip
    8.9 KB · Affichages: 55
  • TABLEAU (2).zip
    9.5 KB · Affichages: 48
  • TABLEAU (1).zip
    8.9 KB · Affichages: 56
  • TABLEAU (2).zip
    9.5 KB · Affichages: 51
  • TABLEAU (1).zip
    8.9 KB · Affichages: 57
  • TABLEAU (2).zip
    9.5 KB · Affichages: 49

pat01200

XLDnaute Occasionnel
Re : Copier automatiquement un tableau vers un autre classeur à la première ligne vid

Bonjour ELSONce, bonjour le forum,

Voici le code d'une macro à placer dans un module de ton Tableau 2 et à associer à un bouton par exemple :
Code:
    Pat = ActiveWorkbook.Name    
    Dim chemin As String
    chemin = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    Classeur = Application.GetOpenFilename("Classeurs Excel,*.xls")
    Workbooks.Open Filename:=Classeur, Local:=True
    
    Dan = ActiveWorkbook.Name
    Sheets("Feuil1").Select
    Range("A2:N100").Select
    Selection.Copy
    Windows(Pat).Activate
    Sheets("Feuil1").Select
    If Range("A2").Value = "" Then
    Range("A2").Select
    Else
    If Range("A2").Value <> "" And Range("A3").Value = "" Then
    Range("A2").Select
    Else
    Range("A2").End(xlDown).Offset(1, 0).Select
    End If
    End if
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
        
    Windows(Dan).Activate
    Application.DisplayAlerts = False
    ActiveWindow.Close
        
    Windows(Pat).Activate
    Range("A1").Select
Cela devrait te permettre d'ouvrir ton tableau 1 (une fenêtre s'afichera pour que tu sélectionnes le bon fichier Excel), de saisir les données s'y trouvant, de les injecter dans ton tableau 2 puis de fermer le tableau 1. Ne connaissant pas la taille de la plage remplie de ton tableau 1, j'ai sélectionner arbitrairement de A2 à N100, mais tu peux modifier ces valeurs à ta guise. De même, j'ai supposé que les plages de départ et d'arrivée se situaient sur la 1ère feuille de chaque claseur, mais si ce n'est pas le cas, ou si tu as donné un nom spécifique à tes onglets, à toi de modifier le code (Sheets("Feuil1"). Select)
 

ELSONCe

XLDnaute Junior
Re : Copier automatiquement un tableau vers un autre classeur à la première ligne vid

Bonjour ELSONce, bonjour le forum,

Voici le code d'une macro à placer dans un module de ton Tableau 2 et à associer à un bouton par exemple :
Code:
    Pat = ActiveWorkbook.Name    
    Dim chemin As String
    chemin = CreateObject("WScript.Shell").SpecialFolders("Desktop")
    Classeur = Application.GetOpenFilename("Classeurs Excel,*.xls")
    Workbooks.Open Filename:=Classeur, Local:=True
    
    Dan = ActiveWorkbook.Name
    Sheets("Feuil1").Select
    Range("A2:N100").Select
    Selection.Copy
    Windows(Pat).Activate
    Sheets("Feuil1").Select
    If Range("A2").Value = "" Then
    Range("A2").Select
    Else
    If Range("A2").Value <> "" And Range("A3").Value = "" Then
    Range("A2").Select
    Else
    Range("A2").End(xlDown).Offset(1, 0).Select
    End If
    End if
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
        
    Windows(Dan).Activate
    Application.DisplayAlerts = False
    ActiveWindow.Close
        
    Windows(Pat).Activate
    Range("A1").Select
Cela devrait te permettre d'ouvrir ton tableau 1 (une fenêtre s'afichera pour que tu sélectionnes le bon fichier Excel), de saisir les données s'y trouvant, de les injecter dans ton tableau 2 puis de fermer le tableau 1. Ne connaissant pas la taille de la plage remplie de ton tableau 1, j'ai sélectionner arbitrairement de A2 à N100, mais tu peux modifier ces valeurs à ta guise. De même, j'ai supposé que les plages de départ et d'arrivée se situaient sur la 1ère feuille de chaque claseur, mais si ce n'est pas le cas, ou si tu as donné un nom spécifique à tes onglets, à toi de modifier le code (Sheets("Feuil1"). Select)

MERCI Patrick ?? :)

Ta proposition est intéressante cependant je suis toujours confronté à une problématique que voici :

1 ) Les utilisateurs du tableau (1) sont sur différents postes et sont nombreux, et avec ta solution la personne qui accède au tableau (2) se retrouve dans l'obiligation d'aller chercher le fichier où se trouve le tableau (1) pour chaque utilisateur. Dans l'absolu, je souhaiterais que le tableau (2) qui est par exemple sur T: se mette à jour automatiquement.

Espérant être assez clair dans mes explications.

Merci par avance pour vos recherches et vos réponses !

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 443
Messages
2 088 470
Membres
103 861
dernier inscrit
FoulBazar31