Nom de fichier depuis .xlt en fonction de la semaine [resolu]

Makina

XLDnaute Junior
Bonjour à tous,

Alors aujourd hui nouveau problème ! J'ai un fichier monfichier.xlt et j'aimerais tout d'abords créer une macro qui chaque me donne un numéro unique à chaque ouverture du .xlt puis renomer ce .xls avec ce meme numéro. En un peu plus claire, dès que je double click sur monfichier.xlt un fichier Classeur1.xls s'ouvre puis Classeur2.xls, ...
Dans ces fichier je lance une macro pour calculer le numéro de la semaine :
Code:
Sub nsem()
Dim FormatDATE As Date

FormatDATE = Date
NoJourSem = DatePart("ww", FormatDATE, vbMonday, vbFirstFourDays)

End Sub
J'aimerai ensuite créer un numéro à 5 chiffres ou les 2 premiers sont le numéro de semaine, et les 3 suivant des nombres incrémentés. Soit si nous somme le 07/11/12, a la premiere ouverture la variable soit : 45001, à la seconde ouverture du .xlt 45002, ... mais la dificulté c est qu il faut que je reparte de 1 pour la semaine suivante soit a la premiere ouverture a partir du 12/11/12 : 46001, a la 356eme ouverture : 46356 ... Puis renomer le fichier par se numero (je dois le sauvegarder car d'apres ce que j ai lu, on ne peux donner un nom a un fichier venant d'un xlt que si il a ete sauvé et a son extension !)

J'ai essayé d'etre le plus claire possible à mon sens, merci par avance de votre aide et n'hesiter pas à me poser des question pour mieux ou simplement comprendre mon besoin !
 
Dernière édition:

Makina

XLDnaute Junior
Re : Nom de fichier depuis .xlt en fonction de la semaine

Bonjour GeoTrouvePas,

Oui ils seront enregistrés dans un meme dossier, mais pourront etre effacés. J'ai omis une chose vraiment très importante ! J'enregistre les données de toute mon fichier dans une base.mdb du coup le numéro que je veux généré y sera ! je suis en train d ecrire des ligne pour cela :
Code:
Sub Nominstance()
y As Integer

    Call nsem 'defini mon numero de semaine

    ' Définir le chemin d'accès à la base
    'sPath = "G:\Techni\EWData70TSE\_20" & annee & ".450\"
    sPath = "C:\Documents and Settings\D6432025\Desktop\Cartonette\"
    ' Définir le nom de la base
    sBase = "Base_cartonette.mdb"

    ' Ouvrir la base en tant que nouveau classeur
    Workbooks.Open Filename:=sPath & sBase
            
    ' Avec ce classeur actif
    With ActiveWorkbook.Sheets(1)
    ' Trouvée la cellule dans la colonne C (3)
    Set celluletrouvee = .Range("C:C").Find(NoJourSem, lookat:=xlPart)
     ' Si la cellule n'est pas trouvée = on commence par 1
    If celluletrouvee Is Nothing Then
    y = 1
    Else

Pour mon else je vais chercher le dernier numéro qui commence par mon numero de semaine ! pour cela, autre question, peut on regarder (lookat) depuis le bas de ma base et ainsi trouvé directement le dernier chiffre? Je donnerai cette valeur +1 à y ! autre chose j ai ma semaine : 45 mon y : 1 comment je lui dis me me creer un nombre à 5 chiffres ? je veux pas me retrouver avec 451 mais 45001 ...

Merci par avance !
 

GeoTrouvePas

XLDnaute Impliqué
Re : Nom de fichier depuis .xlt en fonction de la semaine

Re,

Tu dis que les fichiers pourront être effacés. Dans quel délai cette suppression peut être faite ?
Quand tu vas devoir créer le 450ème fichier de la semaine, le 449ème sera - t - il toujours présent dans le répertoire ou est il envisageable qu'il ait déjà été effacé (ou déplacé) ?
 

Makina

XLDnaute Junior
Re : Nom de fichier depuis .xlt en fonction de la semaine

Re,

Enfaite il serait préférable de partir des numero dans la base, car les fichier seront sauvés (c est deja le cas maintenant) avec le nom de type : Nom_Prenom_xxxxx_dd-mm-yyyy (avec xxxxx le chiffre qui nous interesse) quand le fichier sera definitif. J'aimerais cependant lui donner un nom intermediaire avec juste xxxxx le temps qu il soit finalisé.
Il s'agit enfaite de préparation de palettes, le numero xxxxx correspond un numero de la palette! lors du conditionnement il se peut qu il y est une dizaine de palette en cours, soit une dizaine de classeur ouvert, j aimerais que se soit plus facile de retrouver le fichier de la palette dans la barre de tache, d ou le numero de la palette en nom. Pour l'instant mon numero xxxxx est renseigner manuellement, j'aimerais qu il le prenne tout seul pour eviter à l operateur de savoir quelle numéro est deja passé ou non !
Est ce un peu plus claire ?

Merci
 

GeoTrouvePas

XLDnaute Impliqué
Re : Nom de fichier depuis .xlt en fonction de la semaine

On va dire que c'est encore moins clair qu'avant ! :p
Surtout que tu ne réponds pas à ma question :

Quand tu vas devoir créer le 450ème fichier de la semaine, le 449ème sera - t - il toujours présent dans le répertoire ou est il envisageable qu'il ait déjà été effacé (ou déplacé) ?
 

Makina

XLDnaute Junior
Re : Nom de fichier depuis .xlt en fonction de la semaine

Il se peut que le fichier soit deja effacé... Alors que dans ma DB il y aura tout les numéro de palette deja utilisé donc en incrémentant le dernier numero de ma db, je devrais atteindre mon objectif.
 

GeoTrouvePas

XLDnaute Impliqué
Re : Nom de fichier depuis .xlt en fonction de la semaine

Ok
On commence à y voir plus clair.

Si la colonne C de ta base contient bien le numéro de tes palettes (et pas seulement le numéro de la semaine), tu pourrais faire ceci pour obtenir le numéro de ta nouvelle palette :
Code:
    With ActiveWorkbook.Sheets(1)
        If left(.cells(.cells(1,1).end(xldown).row,3),2) = NumSemaine Then
            NumeroPalette = .cells(.cells(1,1).end(xldown).row,3) + 1
        Else
            NumeroPalette = cdbl(NumSemaine & "00001")
        End If
    End With

En prenant soin de remplacer ta fonction pour le numéro de semaine par ça :
Code:
Function NumSemaine()
    NumSemaine = DatePart("ww", Now, vbMonday, vbFirstFourDays)
End Function

Edit : petite erreur corrigée dans le code
 
Dernière édition:

Makina

XLDnaute Junior
Re : Nom de fichier depuis .xlt en fonction de la semaine

Merci GeoTrouvePas ! On se rapproche de ce que je veux !

Malheureusement la condition : left(.cells(.cells(1,1).end(xldown).row,3),2) = NumSemaine n'est jamais trouvé meme si c il y a deja un numéro 45009 (exemple) il me cree chaque fois le numero 45001
J' ai changé en :
Code:
' Définir le chemin d'accès à la base pour récupérer le numéro d'agrès
    sPath = "C:\Documents and Settings\D6432025\Desktop\cartonette\"
    ' Définir le nom de la base
    sBase = "Base_cartonette.mdb"

   ' Ouvrir la base en tant que nouveau classeur
   Workbooks.Open Filename:=sPath & sBase
    With ActiveWorkbook.Sheets(1)
        If Left(.Cells(.Cells(1, 1).End(xlDown).Row, 3), 2) = NumSemaine Then
            cdt = .Cells(.Cells(1, 1).End(xlDown).Row, 3) + 1
        Else
            cdt = CDbl(NumSemaine & "001")
        End If
    End With
    Application.DisplayAlerts = False
    ActiveWorkbook.Close
    Application.DisplayAlerts = True
    Workbooks(nametest).Sheets("Cartonette").Cells(2, 23) = cdt

C est bien en colonne 3 de ma mdb que le numero de palette est inscrit ... le mdb s ouvre en xls mais je ne pense pas qu il y est une difference ?

En tous cas merci merci et merci ca avance !
 
Dernière édition:

GeoTrouvePas

XLDnaute Impliqué
Re : Nom de fichier depuis .xlt en fonction de la semaine

Je ne vois aucune différence entre mon code et ta version corrigée (mise à part que tu as changé "00001" en "001" ainsi que le nom de la variable)
Malheureusement, je ne peux faire aucun test si tu ne prends pas la peine de fournir un fichier test.
 

GeoTrouvePas

XLDnaute Impliqué
Re : Nom de fichier depuis .xlt en fonction de la semaine

J'ai trouvé 3 erreurs dans mon précédent code.

Il faut remplacer :
Code:
If left(.cells(.cells(1,1).end(xldown).row,3),2) = NumSemaine Then
    NumeroPalette = .Cells(.Cells(1, 1).End(xlDown).Row, 3) + 1
par
Code:
If CDbl(Left(.Cells(.Cells(1, 3).End(xlDown).Row, 3), 2)) = CDbl(NumSemaine) Then
    NumeroPalette = .Cells(.Cells(1, 3).End(xlDown).Row, 3) + 1
et tout rentre dans l'ordre
 
Dernière édition:

Makina

XLDnaute Junior
Re : Nom de fichier depuis .xlt en fonction de la semaine

Alors, j ai enlevé tous les sub qui ne sont pas attraient a ce probleme. J espere que ca ira pour tester.
Par la suite j aimerais qu en ouvrant le xlt, le fichier prenne le nom de la palette au lieu de test1 ... Mais chaque chose en son temps !
Merci
 

Pièces jointes

  • Attachments.zip
    38.5 KB · Affichages: 30

Makina

XLDnaute Junior
Re : Nom de fichier depuis .xlt en fonction de la semaine

MERCIIIIIIIII ! => oui sa fonctionne :) C'est une très très bonne chose de faite pour mon projet ! Un grand merci !

J'ai une autre question, peut etre qu elle nécessite u autre post mais pendant que j y suis ! je vais enregistrer les infos dans ma bease de donnée à plusieur etapes du remplissage de mon fichier, peut on "remplacer" ou modifier une ligne existante dans un fichier mdb ? En gros après avoir attribué mon numero de palette, j'enregistre les info dans ma base, je renseigne d autres infos, je re enregistre dans la base, mais sur la meme ligne (en fesant une recherche lookat xlwhole dans ma colonne 3). Est ce possible Mr. GeoTrouveTOUT
 

Discussions similaires

Statistiques des forums

Discussions
312 083
Messages
2 085 187
Membres
102 809
dernier inscrit
Sandrine83