Microsoft 365 Besoin de conseil - extraire des données pour mettre dans un tableau

Gen Rose

XLDnaute Impliqué
Bonjour le forum,

Dans un classeur, j'ai plusieurs plages dans une feuille (Planif) remplies hebdomadairement pour une équipe. À chaque semaine je veux exporter les données de cette feuille vers une autre (Donnees) sous forme de tableau qui me permettra de faire un TCD (voir feuille nommée TCD) pour des statistiques.

J'avais commencé dans le document original à extraire les données par formule matricielle... mais c'est un travail de moine à n'en plus finir et les cellules étant liées, tout serait effacé la semaine suivante. Je devais ajouter des colonnes manuellement et faire du copié-collé en valeur pour retirer les matricielles. L'idée ici est de garder chaque semaine de l'année pour les statistiques. J'ai aussi ajouté des colonne temps, date et mois. C'est contre-productif et je dois trouver une vraie méthode viable.

J'ai donc besoin de vos conseils à savoir si je dois me diriger vers VBA ou Power Query. Dans les 2 cas, j'aurai une grande courbe d'apprentissage et je ne veux pas passer du temps sur une méthode pour réaliser que j'aurais du faire autrement. Dans les 2 cas, je vais certainement solliciter encore l'aide du forum pour m'aider car ce projet me semble complexe.

Néanmoins, je veux gagner en autonomie mais je dois avancer vite car le besoin est maintenant.

Ce sera plus limpide avec le fichier joint.
Merci beaucoup
 

Pièces jointes

  • Donnees_pour_TCD.xlsm
    46.2 KB · Affichages: 12
Dernière édition:
Solution
La nuit portant conseil, à la vue de ta méthode, et pour gagner en rapidité.
J'ai changé la compilation, qui traitait toutes les lignes .
Elle a lieu maintenant à chaque adjonction de ligne, et j'ai ajouté une couleur sur la dernière ligne de chaque semaine, pour une meilleur visibilité

Gen Rose

XLDnaute Impliqué
Re
Les listes ne fonctionnaient déjà pas dans la version que tu m'a envoyé.
Les choix doivent-ils comprendre les deux langues en Même temps,
Si non validation de données: =EN ou =FR
en fonction de la langue souhaitée pour l'employé
Pardon, c'est logique car j'ai retiré la feuille "refs" :rolleyes: donc entièrement de ma faute!! C'est gênant!

Tout est impeccable, merci beaucoup :)
(oublie mon dernier commentaire!!)
 

Gen Rose

XLDnaute Impliqué
@sousou en ajoutant les nouvelles info dans la feuille "planif" pour la semaine actuelle, je remarque que lors de l'export, les données de la semaine précédente sont effacées et remplacées.

Pour les statistiques, il me faut cumuler les info semaines après semaines.
Comment dire à la macro "ajoute les infos à la suite de celles déjà présentes"?
 

sousou

XLDnaute Barbatruc
?
En principe la macro recalcul toutes les infos de la feuille planif.
Peux-tu préciser, ta méthode de travail , As-tu supprimer des infos de la feuille planif.
Si tu ne conserve pas toutes les données dans la feuille planif, il faut revoir notre façon de faire
 

Gen Rose

XLDnaute Impliqué
?
En principe la macro recalcul toutes les infos de la feuille planif.
Peux-tu préciser, ta méthode de travail , As-tu supprimer des infos de la feuille planif.
Si tu ne conserve pas toutes les données dans la feuille planif, il faut revoir notre façon de faire
D'accord, je comprends (je crois)

La feuille "Planif" sera modifiée à chaque semaine et il est possible que certaines plages d'employés soient entièrement vide (ex.: vacances). Les plages remplies par employé peuvent avoir des journées vides et d'autres remplies.

Lorsque je modifie la feuille "Planif" et j'exporte mes données via la macro, il faudrait que ces nouvelles données s'ajoutent à la suite de celles déjà présentes dans la feuille "mesdonnées" afin de cumuler chaque semaine.

Donc disons que la première semaine j'ai 700 lignes exportées dans "mes données" et que la semaine suivante j'en exporte encore 700, la feuille "mes données" en comprendrais maintenant 1400. Au bout d'une année, au cumul de mes export de 700 lignes par semaine (cela peut différer), j'aurais maintenant 36400 lignes. Cela me permet donc de voir, avec le TCD, les statistiques des horaires sur une année.

J'espère avoir bien expliqué et aussi, avoir bien saisi la question :)
 

Gen Rose

XLDnaute Impliqué
Ceci?

exRAZ.jpg
 

sousou

XLDnaute Barbatruc
La nuit portant conseil, à la vue de ta méthode, et pour gagner en rapidité.
J'ai changé la compilation, qui traitait toutes les lignes .
Elle a lieu maintenant à chaque adjonction de ligne, et j'ai ajouté une couleur sur la dernière ligne de chaque semaine, pour une meilleur visibilité
 

Pièces jointes

  • Donnees_pour_TCD_macrov2.xlsm
    50.2 KB · Affichages: 3

Gen Rose

XLDnaute Impliqué
La nuit portant conseil, à la vue de ta méthode, et pour gagner en rapidité.
J'ai changé la compilation, qui traitait toutes les lignes .
Elle a lieu maintenant à chaque adjonction de ligne, et j'ai ajouté une couleur sur la dernière ligne de chaque semaine, pour une meilleur visibilité
Formidable! 😊 J'aime beaucoup le soulignement dans "mesdonnees" aussi. Très heureuse des améliorations c'est tout simplement génial!

Si je veux mettre ce soulignement au début de chaque importation (plutôt que par personne), comment je m'y prendrais? Je crois que c'est ici:

VB:
Sub deb()
Application.ScreenUpdating = False

With Sheets("BdD")
lignedonnées = .UsedRange.End(xlDown).Row + 1
'.UsedRange.Range(.Cells(lignedonnées, 1), .Cells(.UsedRange.Rows.Count, .UsedRange.Columns.Count)).Delete
.Activate
End With
cherche

End Sub

VB:
Sub construire(mazone, emp)
Dim table(7)
With Sheets("planif")
    For lg = 1 To mazone.Rows.Count
        For c = 1 To mazone.Columns.Count
        table(0) = emp.Value

        table(1) = .Cells(mazone.Row + lg, mazone.Column)
        table(3) = .Cells(mazone.Row + lg, mazone.Column + c)
        Set d = .Cells(mazone.Row, mazone.Column + c)
        
       table(5) = Format(d, "dddd dd mmmm yyyy")
        table(2) = Format(d, "hh:mm:ss")
        If table(3) = "" Then table(4) = 0 Else table(4) = 0.5
        table(6) = Format(d, "mmmm")
      
    With Sheets("BdD")
        For n = 0 To UBound(table)
            .Cells(lignedonnées - 1, n + 1) = table(n)
         Next
         Call compilation(lignedonnées - 1)
        
        lignedonnées = lignedonnées + 1
    End With
      Next
     Next
Sheets("BdD").Range("$a$" & lignedonnées - 2 & ":$g$" & lignedonnées - 2).Interior.Color = RGB(55, 555, 55)
End With

End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 091
Messages
2 116 117
Membres
112 665
dernier inscrit
JPHD