Création de date dans le titre d'1 copie d'une feuille excel

Fermé
tilo75 Messages postés 48 Date d'inscription mardi 19 novembre 2013 Statut Membre Dernière intervention 13 mai 2014 - 19 nov. 2013 à 07:32
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 19 déc. 2013 à 07:57
Bonjour à la communauté,

J'ai besoin d'un grand coup de main.

Le contexte:

Il s'agit d'une feuille excel que je voudrais copier dans un autre fichier avec un titre qui contient une date qui soit créée à chaque fois que j'active la macro de copy, de façon à différencier les feuilles dans le fichier copie au fur et mesure qu'elles sont créés. Dans notre exemple le nom de la feuille serait : Master data_Référentiel remises (yyyy,m,d)

Voici la macro que j'ai essayé de créer, mais je bloque sur la mise en place de la date dans le titre.

'Copier la feuille MD dans le fichier Master Data
Sub CopyMDVersClasseur()
Sheets("MD LECASUD").Copy
Chemin = "D:\Remises\Master data_Référentiel remises (yyyy,m,d).xlsx"
ActiveWorkbook.SaveAs Chemin
End Sub

Merci de votre aide.


Merci d'avance

A voir également:

4 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
19 nov. 2013 à 08:10
Bonjour,

Tu peux récupérer la date du jour grâce à Date. Y ajouter l'heure (précision à la seconde) grâce à Now.
Comme tu va les utiliser dans un nom de fichier, on va éviter les caractères spéciaux en formatant ces deux fonctions.

Dim maDate As String, MaDateAvecHeure As String, Chemin As String

maDate = Format(Date, "yyyymmdd")
MaDateAvecHeure = Format(Now, "yyyymmddhhmmss")
Chemin = "D:\Remises\Master data_Référentiel remises" & maDate & ".xlsx"
'ou
' Chemin = "D:\Remises\Master data_Référentiel remises" & MaDateAvecHeure & ".xlsx"

1
tilo75 Messages postés 48 Date d'inscription mardi 19 novembre 2013 Statut Membre Dernière intervention 13 mai 2014
19 nov. 2013 à 19:07
merci Franck, pour l'aide, ça fonctionne.

Cependant j'ai un message qui s'affiche à chaque fois:

"Les fonctionnalités suivantes ne peuvent pas êtres enregistrées dans des classeurs sans macros:

. Projet VB

Pour enregistrer un fichier avec ces fonctionnalités, cliquer sur Non, puis sélectionnez un type de fichier prenant en charge les macros dans la liste Type de fichier.
Pour continuer à enregistrer en tant que classeur sans macro, cliquez sur Oui."



Comment faire qu'il n'a paresse pas et que le fichier aille se ranger dans son fichier gentillement sans poser de question ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
20 nov. 2013 à 07:56
Salut,

Si tu as une macro dans tes fichiers (et là c'est le cas car on fait une copie du classeur contenant la macro), il convient de les enregistrer en .xlsm au lieu de .xlsx.

Mais bon, ce n'est pas la bonne solution car tu va reproduire x fois une macro, dans x classeurs, alors que cela ne t'es d'aucune utilité.

Solution 1
Ce que tu peux faire, c'est te créer un classeur vierge, ne contenant que la macro.
Par contre, il te faudra légèrement modifier cette dernière pour qu'elle :
1- vérifies si le classeur "source" de tes données est ouvert,
2- s'il est fermé, qu'elle l'ouvre.

Solution 2
La mieux adaptée à ton cas...
Placer ta macro dans le classeur Perso.xls.
Pour se faire, suit ce tuto : http://www.info-3000.com/vbvba/oumacrostockee.php chapitre : Dans le classeur de macros personnelles PERSO.XLS (Classeur masqué par défaut)
0
tilo75 Messages postés 48 Date d'inscription mardi 19 novembre 2013 Statut Membre Dernière intervention 13 mai 2014
Modifié par tilo75 le 25/11/2013 à 20:08
merci Franck.

J'ai de nouveau une colle.

je souhaiterai rationaliser la liste suivante au niveau des dates, je pense qu'il faudrait faire plusieurs boucle afin de valider le sku1, puis le sku 2 , puis le types de remises, puis le taux pour enfin élimner les dates qui se suivent afin d'avoir qu'une seule ligne par exemple pour la premieres ligne 111111 123 A 0,034 30/12/2013 19/01/2014

l'exemple ci dessous
SKU 1 SKU 2 Remises TAUX Périodes
111111 123 A 0,034 30/12/2013 31/12/2013
111111 123 A 0,034 01/01/2014 05/01/2014
111111 123 A 0,034 06/01/2014 12/01/2014
111111 123 A 0,034 13/01/2014 19/01/2014
111111 123 A 0,000 01/02/2014 02/02/2014
111111 123 B 2,000 30/12/2013 31/12/2013
111111 123 B 2,000 01/01/2014 05/01/2014
111111 123 B 2,000 06/01/2014 12/01/2014
111111 123 B 2,000 13/01/2014 19/01/2014
111111 123 B 2,000 20/01/2014 26/01/2014
111111 123 B 2,000 01/02/2014 02/02/2014
111111 123 D 0,000 30/12/2013 31/12/2013
111111 123 D 0,000 01/01/2014 05/01/2014
111111 123 D 0,000 06/01/2014 12/01/2014
111111 123 D 0,000 13/01/2014 19/01/2014
111111 123 D 0,000 20/01/2014 26/01/2014
111111 123 D 0,000 01/02/2014 02/02/2014
222222 321 A 0,101 06/01/2014 12/01/2014
222222 321 A 0,101 20/01/2014 26/01/2014
222222 321 A 0,101 27/01/2014 31/01/2014
222222 321 B 2,000 06/01/2014 12/01/2014
222222 321 B 2,000 20/01/2014 26/01/2014
222222 321 B 2,000 27/01/2014 31/01/2014
222222 321 C 8,320 06/01/2014 12/01/2014
222222 321 C 8,320 20/01/2014 26/01/2014
222222 321 C 8,320 27/01/2014 31/01/2014
333333 444 A 0,297 20/01/2014 26/01/2014

merci d'avance
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
26 nov. 2013 à 07:49
Bonjour,

Soyons clairs...
Tu veux sur une seule ligne la date de début et la date de fin si les colonnes SKU1 SKU2 Remises et Taux sont identiques?
Si oui, de qu'elles colonnes parle t'on ? A B C et D? dates en E et F?
tu veux ta "récap" dans la même feuille? une autre?
0
tilo75 Messages postés 48 Date d'inscription mardi 19 novembre 2013 Statut Membre Dernière intervention 13 mai 2014 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
26 nov. 2013 à 08:03
Oui tout a fait
0
tilo75 Messages postés 48 Date d'inscription mardi 19 novembre 2013 Statut Membre Dernière intervention 13 mai 2014 > tilo75 Messages postés 48 Date d'inscription mardi 19 novembre 2013 Statut Membre Dernière intervention 13 mai 2014
26 nov. 2013 à 08:08
A ski 1 B sku 2 C remises D taux E date début F date fin

Le remplacement Sur la même page et ou une autre si pas trop compliqué à faire.

Merci bcp
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
26 nov. 2013 à 12:08
essaye ce code :

Sub Regroupe()
Dim Dico As Object, Donnees(), Temp(), T_Out()
Dim i As Long, ind As Long
Dim DepartTemp As Date, FinTemp As Date

Set Dico = CreateObject("Scripting.Dictionary")
ind = 0
Donnees = Range("A2:F" & Range("A" & Rows.Count).End(xlUp).Row)

For i = LBound(Donnees) To UBound(Donnees)
    If Not Dico.exists(Donnees(i, 1) & "¤" & Donnees(i, 2) & "¤" & Donnees(i, 3) & "¤" & Donnees(i, 4)) Then
        Dico(Donnees(i, 1) & "¤" & Donnees(i, 2) & "¤" & Donnees(i, 3) & "¤" & Donnees(i, 4)) = ""
        ind = ind + 1
        ReDim Preserve T_Out(1 To 6, 1 To ind)
        T_Out(5, ind) = Donnees(i, 5)
        T_Out(6, ind) = Donnees(i, 6)
    Else
        If Donnees(i, 1) & Donnees(i, 2) & Donnees(i, 3) & Donnees(i, 4) = Donnees(i - 1, 1) & Donnees(i - 1, 2) & Donnees(i - 1, 3) & Donnees(i - 1, 4) Then
            DepartTemp = Donnees(i - 1, 5)
            FinTemp = Donnees(i - 1, 6)
            If Donnees(i, 5) < DepartTemp Then T_Out(5, ind) = Donnees(i, 5)
            If Donnees(i, 6) > FinTemp Then T_Out(6, ind) = Donnees(i, 6)
        End If
    End If
Next i

Temp = Dico.Keys

For i = LBound(Temp) To UBound(Temp)
    T_Out(1, i + 1) = Split(Temp(i), "¤")(0)
    T_Out(2, i + 1) = Split(Temp(i), "¤")(1)
    T_Out(3, i + 1) = Split(Temp(i), "¤")(2)
    T_Out(4, i + 1) = Split(Temp(i), "¤")(3)
Next i

With Sheets("MID MODIF")
    .Range("A2").Resize(UBound(T_Out, 2), UBound(T_Out, 1)) = Application.Transpose(T_Out)
End With
End Sub 
 
0
tilo75 Messages postés 48 Date d'inscription mardi 19 novembre 2013 Statut Membre Dernière intervention 13 mai 2014
12 déc. 2013 à 19:25
Salut Franck ,

Désolé de se retour tardif, merci de ton aide en tout cas. Les macros sont super évoluées, je connaissait pas.
Malheureusement le code ne fonctionne pas.
Il semblerait que ça consolide quelques valeurs au début, mais les lignes qui deviennent du coup inutiles ne disparaissent pas.
Egalement j'ai l'impression qu'il ne prend pas en compte les petits intervalles (Soit supérieur à un jour entre deux dates).
Comment faire pour t'envoyer le fichier. Peut être que ça pourrait facilité ce que j'essai de te dire.
Merci d'avance,
Laurent
0
tilo75 Messages postés 48 Date d'inscription mardi 19 novembre 2013 Statut Membre Dernière intervention 13 mai 2014
13 déc. 2013 à 10:42
en cherchant sur les forum j'ai trouve cijoint.com pour déposer le fichier.
le lien est le suivant : https://www.cjoint.com/?3LnkNcLVbvI
le document s'appel rangement modif MD
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
13 déc. 2013 à 11:00
Salut,

Tes données ne sont pas triées.....

3538280054743	613823	A	1,000	01/01/2014
3538280052756 613812 B 1,000 01/01/2014
3538280052756 613812 B 1,000 06/01/2014
3538280052756 613812 B 1,000 13/01/2014
3538280052756 613812 B 1,000 20/01/2014
3538280052756 613812 B 1,000 27/01/2014
3538280052756 613812 B 1,000 03/02/2014
3538280052756 613812 B 1,000 10/02/2014
3538280054743 613823 B 1,000 01/01/2014
3538280054743 613823 B 1,000 06/01/2014
3538280054743 613823 B 1,000 13/01/2014
3538280054743 613823 B 2,000 20/01/2014
3538280054743 613823 B 2,000 27/01/2014
3538280054743 613823 B 2,000 03/02/2014
3538280054743 613823 B 2,000 10/02/2014
3538280054743 613823 A 1,000 06/01/2014
3538280054743 613823 A 1,000 13/01/2014
3538280054743 613823 A 1,000 20/01/2014
3538280054743 613823 A 1,000 27/01/2014

0
tilo75 Messages postés 48 Date d'inscription mardi 19 novembre 2013 Statut Membre Dernière intervention 13 mai 2014
13 déc. 2013 à 12:15
Trop fort le gars... l'oeil de lynx. désolé,
J'ai refait le tri. et effectivement ça marche mieux. Cependant, entre deux lignes dans certains cas, y a un trou de deux jours. la macro fait pas la différence, elle va jusqu'à la fin. J'ai mis en couleur dans le fichier cette fois si.
Egalement comment faire pour faire disparaître les lignes qui deviennent inutiles?
nouveau lien : https://www.cjoint.com/?3LnmiyrJHsd nom: Rangement MD Modif V1
Merci
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
13 déc. 2013 à 13:02
Cependant, entre deux lignes dans certains cas, y a un trou de deux jours. la macro fait pas la différence, elle va jusqu'à la fin.
Euh ça n'était pas précisé....
Attention aux demandes qui évoluent, certains moments il n'est plus possible de faire en sorte que le code soit adaptable.
Bon ici, ça à l'air de rouler.
Dis moi...

Sub Regroupe()
Dim Dico As Object, Donnees(), Temp(), T_Out()
Dim i As Long, ind As Long
Dim DepartTemp As Date, FinTemp As Date

Set Dico = CreateObject("Scripting.Dictionary")
ind = 0
Donnees = Range("A2:F" & Range("A" & Rows.Count).End(xlUp).Row)

For i = LBound(Donnees) To UBound(Donnees)
    If Not Dico.exists(Donnees(i, 1) & "¤" & Donnees(i, 2) & "¤" & Donnees(i, 3) & "¤" & Donnees(i, 4)) Then
        Dico(Donnees(i, 1) & "¤" & Donnees(i, 2) & "¤" & Donnees(i, 3) & "¤" & Donnees(i, 4)) = ""
        ind = ind + 1
        ReDim Preserve T_Out(1 To 6, 1 To ind)
        T_Out(5, ind) = Donnees(i, 5)
        T_Out(6, ind) = Donnees(i, 6)
    Else
        If Donnees(i, 1) & Donnees(i, 2) & Donnees(i, 3) & Donnees(i, 4) = Donnees(i - 1, 1) & Donnees(i - 1, 2) & Donnees(i - 1, 3) & Donnees(i - 1, 4) Then
            DepartTemp = Donnees(i - 1, 5)
            FinTemp = Donnees(i - 1, 6)
            If Donnees(i, 5) > FinTemp + 1 Then
                ind = ind + 1
                ReDim Preserve T_Out(1 To 6, 1 To ind)
                T_Out(1, ind) = "BIP"
                T_Out(5, ind) = Donnees(i, 5)
                T_Out(6, ind) = Donnees(i, 6)
            Else
                If Donnees(i, 5) < DepartTemp Then T_Out(5, ind) = Donnees(i, 5)
                If Donnees(i, 6) > FinTemp Then T_Out(6, ind) = Donnees(i, 6)
            End If
        End If
    End If
Next i

Temp = Dico.Keys
ind = 1

For i = LBound(Temp) To UBound(Temp)
    Do While T_Out(1, ind) = "BIP"
        T_Out(1, ind) = Split(Temp(i - 1), "¤")(0)
        T_Out(2, ind) = Split(Temp(i - 1), "¤")(1)
        T_Out(3, ind) = Split(Temp(i - 1), "¤")(2)
        T_Out(4, ind) = Split(Temp(i - 1), "¤")(3)
        ind = ind + 1
    Loop
    T_Out(1, ind) = Split(Temp(i), "¤")(0)
    T_Out(2, ind) = Split(Temp(i), "¤")(1)
    T_Out(3, ind) = Split(Temp(i), "¤")(2)
    T_Out(4, ind) = Split(Temp(i), "¤")(3)
    ind = ind + 1
Next i

With Sheets("MODIF MD")
    If .Range("A" & Rows.Count).End(xlUp).Row > 1 Then .Range("A2:H" & Range("A" & Rows.Count).End(xlUp).Row).Delete
    .Columns("A:A").NumberFormat = "@"
    .Range("A2").Resize(UBound(T_Out, 2), UBound(T_Out, 1)) = Application.Transpose(T_Out)
End With
End Sub
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
18 déc. 2013 à 10:56
Avant de continuer et faire le regroupement par périodes, peux tu me dire si le résultat de cette macro (cf feuille Intermediaire) est bon? ou pas...
https://www.cjoint.com/c/CLsk4MLrzqG
0
tilo75 Messages postés 48 Date d'inscription mardi 19 novembre 2013 Statut Membre Dernière intervention 13 mai 2014
18 déc. 2013 à 11:31
y a probleme au niveau du tri, y une reference qui apparait a la fin hors elle devrait etre avec l'avant dernier groupe de ref
y a une erreur déja identifiée dans la macro au niveau de 'balayage des colonnes de l'onglet conso
TbIntermediaire(4, l) = TbOngletConso(6, k) 'valeurs modifiées, au lieu du 6 c'est i
au niveau des dates il y a inversion en entre le jour et le mois pour toutes les valeurs qui ont comme mois janvier
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
18 déc. 2013 à 12:36
On avance.
C'est bien.

Qu'en penses tu :
https://www.cjoint.com/c/CLsmKGx2AFo

ps : le regroupement par période n'est pas encore fait...
0
tilo75 Messages postés 48 Date d'inscription mardi 19 novembre 2013 Statut Membre Dernière intervention 13 mai 2014
18 déc. 2013 à 12:48
OUI C CLAIR :)) merci ça à l'air bon
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
18 déc. 2013 à 13:00
plus qu'à regrouper par périodes.....
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
18 déc. 2013 à 13:40
0