Autres Transférer des données d'une feuille Excel vers une autre avec subtilité ...

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 !

furiousxsi

XLDnaute Nouveau
Bonjour,

Je souhaiterai transféré automatiquement une base de données qui est classé par colonne en feuille1 sur feuille2 en mettant en ligne et en respectant la case date et les équipes concerné ça sera plus lisible 😉

à tout de suite
 

Pièces jointes

Bonsoir @furiousxsi 😉

Un essai en VBA.
Le tableau se met à jour quand on modifie une valeur dans les colonnes A à C (pour débuter, retapez une valeur dans une de ces trois colonnes).

nota : si pour une date donnée et une équipe donnée, il y a plusieurs lignes, alors on ajoute les valeurs de ces lignes pour le tableau final.

Le code est dans le module de code associé à la feuille "Feuil1"/
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dLig, dCol, t, i&, n&, r
 
   If Intersect(Range("a:c"), Target) Is Nothing Then Exit Sub
   Application.ScreenUpdating = False
   Set dLig = CreateObject("scripting.dictionary"): Set dCol = CreateObject("scripting.dictionary")
   Columns("a:a").Copy Columns("e:e")
   Columns("e:e").Sort key1:=Range("e1"), order1:=xlDescending, Header:=xlYes
   Columns("e:e").RemoveDuplicates Columns:=1, Header:=xlYes
   t = Intersect(Range("e:e"), Me.UsedRange).Value2
   For i = 2 To UBound(t)
      If t(i, 1) <> "" Then If IsNumeric(t(i, 1)) Then dCol(CStr(t(i, 1))) = 1 + dCol.Count
   Next i

   Columns("b:b").Copy Columns("e:e")
   Columns("e:e").Sort key1:=Range("e1"), order1:=xlAscending, Header:=xlYes, MatchCase:=False
   Columns("e:e").RemoveDuplicates Columns:=1, Header:=xlYes
   t = Intersect(Range("e:e"), Me.UsedRange).Value
   For i = 2 To UBound(t)
      If t(i, 1) <> "" Then dLig(CStr(t(i, 1))) = 1 + dLig.Count
   Next i

   ReDim r(1 To dLig.Count, 1 To dCol.Count)
   t = Intersect(Range("a:c"), Me.UsedRange).Value2

   For i = 2 To UBound(t)
      If t(i, 1) <> "" Then
         If IsNumeric(t(i, 1)) Then r(dLig(t(i, 2)), dCol(CStr(t(i, 1)))) = r(dLig(t(i, 2)), dCol(CStr(t(i, 1)))) + t(i, 3)
      End If
   Next i

   Range(Range("e1"), Range("e1").End(xlToRight)).EntireColumn.Clear
   Range("f1").Resize(, dCol.Count) = dCol.keys
   Range("e2").Resize(dLig.Count) = Application.Transpose(dLig.keys)
   Range("f2").Resize(UBound(r), UBound(r, 2)) = r
   Range("f1").Resize(, dCol.Count).NumberFormat = "dd mmm yyyy"
   Range("e1").Resize(dLig.Count + 1, dCol.Count + 1).Borders.LineStyle = xlContinuous
   Range("f1").Resize(, dCol.Count).Orientation = 60
   Range("e1").Resize(dLig.Count + 1, dCol.Count + 1).EntireColumn.AutoFit
End Sub
 

Pièces jointes

Re,

Je n'ai pas prêté attention que vous désirez le résultat sur Feuil2. Voici la version qui le fait.

Le tableau se met à jour chaque fois qu'on sélectionne la feuille Feuil2.
Le code est dans le module de la feuille Feuil2.
 

Pièces jointes

Dernière édition:
Bonjour à tous
Merci @mapomme pour ton intervention.
@furiousxsi , qu'est ce qui ne va pas dans ma proposition ?
Dans le post#4 ou tu fournis une petite copie d'écran, c'est difficile de pourvoir comparer quelque chose !!!!

As tu remarqué que sur le TCD joint, il y avait des petits "+" pour ouvrir le mois et donc afficher les jours en conséquence.

1666026101554.png



@+ Lolote83
 
Re,

Si la structure des données est changeante, on va avoir du mal à s'accorder 😵
Dans le fichier de départ, les dates sont des dates "pures" sans heure et c'est avec cette état de fait que j'ai composé.
Mais dans le dernier fichier du message #9, les dates sont des dates avec heure !!!!

Ce n'est pas la même chose... Et les résultats s'en ressentent.

Faut-il laisser tomber les heures ?
 
Bonjour à tous
Merci @mapomme pour ton intervention.
@furiousxsi , qu'est ce qui ne va pas dans ma proposition ?
Dans le post#4 ou tu fournis une petite copie d'écran, c'est difficile de pourvoir comparer quelque chose !!!!

As tu remarqué que sur le TCD joint, il y avait des petits "+" pour ouvrir le mois et donc afficher les jours en conséquence.

Regarde la pièce jointe 1152579


@+ Lolote83
non je n'avais pas remarqué ... je le constate sur ta capture d'écran ... je vais revoir ça de plus prés
 
Re,

Si la structure des données est changeante, on va avoir du mal à s'accorder 😵
Dans le fichier de départ, les dates sont des dates "pures" sans heure et c'est avec cette état de fait que j'ai composé.
Mais dans le dernier fichier du message #9, les dates sont des dates avec heure !!!!

Ce n'est pas la même chose... Et les résultats s'en ressentent.

Faut-il laisser tomber les heures ?
oui on peut laisser tomber les heures. désolé
 
- 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