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

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

  • Classement auto par date.xlsx
    44.4 KB · Affichages: 7

mapomme

XLDnaute Barbatruc
Supporter XLD
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

  • furiousxsi- Classement auto par date- v1.xlsm
    49.1 KB · Affichages: 7

mapomme

XLDnaute Barbatruc
Supporter XLD
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

  • furiousxsi- Classement auto par date- v2.xlsm
    49.9 KB · Affichages: 2
Dernière édition:

Lolote83

XLDnaute Barbatruc
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
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Si la structure des données est changeante, on va avoir du mal à s'accorder o_O
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 ?
 

furiousxsi

XLDnaute Nouveau
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
 

furiousxsi

XLDnaute Nouveau
Re,

Si la structure des données est changeante, on va avoir du mal à s'accorder o_O
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é
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 202
Membres
103 157
dernier inscrit
youma