Conversion base de données dates

WTF

XLDnaute Impliqué
Bonjour le forum,

Je travail sur un calendrier de projet qui embarquerait plusieurs services et entreprise.
Pour ca, j'ai mis en place un document de collecte d'information (onglet base) de mon fichier.

Pour pouvoir travailler dessus, je souhaiterais convertir cette table en la transposant selon un modèle (onglet cible) qui reprendrait pour chaque tache, une date de début et une date de fin.

Je me débrouille bien pour les formules Excel même un peu complexe, mais pas du tout dans les macro.

Si vous pouviez m'aider ca serait top.
Merci à tous
 

Pièces jointes

  • Conversion base de donnée date.xlsx
    17.1 KB · Affichages: 8

xUpsilon

XLDnaute Accro
Bonjour,

Je suis en train de te faire une macro mais il y a certains points qui me dérangent :
- dans certaines tâches, tu as une seule date, dans d'autres tu as date de départ et date de fin, c'est normal ?
- est-il nécessaire d'avoir la durée ? Si oui, est-il possible de la mettre après les dates de début et de fin, ou veux tu absolument l'avoir au milieu ?

Bonne continuation
 

WTF

XLDnaute Impliqué
Salut xUpsilon,

Merci pour ton temps. Pour répondre à tes questions :

dans certaines tâches, tu as une seule date, dans d'autres tu as date de départ et date de fin, c'est normal ?
Oui j'ai des tâches qui ne durent qu'une journée systématiquement et pour simplifier la saisie du contributeur, je n'ai mis qu'une colonne

est-il nécessaire d'avoir la durée ? Si oui, est-il possible de la mettre après les dates de début et de fin, ou veux tu absolument l'avoir au milieu ?
Oui c'est nécessaire, mais pas forcément à cet endroit, ca peut être décalé.

A ta dispo si tu as besoin d'autres infos
 

WTF

XLDnaute Impliqué
Top ca marche bien.
Petite question :
- si je veux décaler sur l'onglet "cible" pour que les données se remplissent à partir de la ligne 5 ?
- Sais tu si il y aurait une façon de procéder qui permettrait d'aller un peu plus vite ? Ca n'est pas la mort, mais le temps de traitement dure quelques minutes sur mon fichier.



Merci bcp
 

xUpsilon

XLDnaute Accro
- Il faut changer le code et la valeur de n à l'initialisation, qui indique la première ligne à remplir sur la feuille Cible.
- Je ne sais pas du tout, sur mon ordi ça s'exécute en quelques secondes à vrai dire. J'imagine qu'il doit y avoir moyen de faire plus rapide mais je ne sais pas comment, d'autant plus que les données subissent pas mal de tests (cas particuliers des colonnes avec une seule date ou deux, cas des cellules avec na, cas des cellules vides, etc), du coup j'ai pas trouvé mieux que de boucler cellule par cellule sur la sélection.
 

WTF

XLDnaute Impliqué
Du coup si je modifie le code ca donne ca ? Juste pour être sûr que je fais la modif au bon endroit (j'ai changé For J = 3 en For J = 2):
VB:
Sub Bouton1_Cliquer()
Dim DerLi, DerCol, n As Integer

DerLi = Range("Base!A3").End(xlDown).Row
DerCol = Range("Base!A2").End(xlToRight).Column
n = 5

For i = 7 To DerCol
    For j = 2 To DerLi
        If Cells(j, i) <> "na" And Cells(j, i) <> "" Then
            Range("Base!A" & j & ":F" & j).Copy
            Range("Cible!A" & n).PasteSpecial
            Range("Cible!G" & n) = Cells(5, i)
            If i = 13 Or i = 19 Then
                Range(Cells(j, i), Cells(j, i + 1)).Copy
                Range("Cible!H" & n).PasteSpecial
            Else
                Range("Cible!H" & n) = Cells(j, i)
                Range("Cible!I" & n) = Cells(j, i)
            End If
            n = n + 1
        End If
    Next j
    If i = 13 Or i = 19 Then
        i = i + 1
    End If
Next i
        
End Sub
 

WTF

XLDnaute Impliqué
J'ai fait le test. Ca ne fonctionne pas. Ca va rechercher le titre des colonnes, mais pas le titre des tâches qui sont en G2:AG2.
Mais peut être que je m'étais mal exprimé au début.

En fait je souhaite qu'a chaque fois soit aussi rapatrié le nom de la tâche, par exemple dans mon ci joint : Comité audit Entreprise / CA Entreprise / ...

Bien à toi
 

xUpsilon

XLDnaute Accro
J'avoue ne pas comprendre pourquoi il n'arrive pas à récupérer la valeur, il s'agit sans doute du fait que les données d'en-tête de tableaux doivent être récupérées bizarrement.
Je vais essayer de me pencher dessus. Au passage, remets le compteur j à 3, c'était une erreur de ma part de te dire de changer ça

Ok voici ci-joint la bonne version, j'avais juste fait une faute de frappe au milieu c'était une erreur stupide.
Au passage, j'ai rajouté une gestion du ScreenUpdating pour éviter que tu aies envie de vomir pendant l'exécution de la macro ;)

Le fichier corrigé

Bonne continuation
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Pas sympa d'obliger à aller sur ci-joint. Dans quelques temps les fichiers auront disparus et ne serviront plus au demandeurs futurs.

Quoiqu'il en soit, en me basant sur le fichier exemple du post #1, voici une solution avec power query et ce qu'il me semble avoir compris de la demande.

La requête se fait en deux phases:
  1. Préparation, chargée de transposer les données, créer un index de ligne/tache et autres
  2. Finale chargée de créer les débuts et fins et de calculer les durées. (Seule cette requête est affichée dans une feuille)

Le tableau de la feuille Base a été transformé en tableau structuré et certaines colonne renommée avec ' Début' ou ' Fin' ajouté, afin que powerquery ne les renomme pas lui-même

J'ai laissé la colonne index mais elle pourrait être supprimée.

Cordialement
 

Pièces jointes

  • Conversion base de donnée date.xlsx
    39.9 KB · Affichages: 4

Discussions similaires

Statistiques des forums

Discussions
311 723
Messages
2 081 932
Membres
101 844
dernier inscrit
pktla