Réintialiser des cellules en validation de données

Bonjour à tous et à toutes,

Je vous explique la situation :.

J'ai un fichier de traitement de boulot et avec mon collègue, nous travaillons sur une versions excel sans macro, mais ce n'est pas terrible du tout. Je sui donc en train de le faire évoluer vers une version avec macro, pour le rendre plus fun et surtout plus simple. Ce fichier doit être tenu à jour en toute le journée, sauvegardé tous les soirs et réinitialisé chaque matin.

Voici donc mes 2 problèmes :

1) J'ai créé un bouton de RAZ journalier, qui me vide certaines cellules mais sans toucher à certaines autres, pour un suivi à plus long terme. Et parmi les cellules que je voudrais réinitialiser, il y a 9 cellules distinctes (K11, W11, AI11, K17, W17, AI17, K23, W23 et AI23), sur lesquelles j'ai appliqué une validation de données "oui;non".

Je ne sais pas comment faire pour que ces 9 cellules retrouvent un état "oui" lorsque j'appuie sur mon bouton de RAZ journalier.

2) Actuellement, nous sauvegardons une copie du fichier excel chaque soir pour nos archives, mais c'est un peu contraignant, et ce ne'est pas une archive, dans le sens où le fichier peut être modifié à posteriori. J'ai donc créé un bouton de sauvegarde journalier en pdf, qui reprend la forme "yyyy-mm-dd-GOF.pdf" et qui se sauvegarde dans le même dossier que le fichier source. Seulement, mon fichier source se trouve dans un dossier sur un sharepoint local, et ce dossier comprend un sous-dossier "Suivi GOF Locotracteurs" dans lequel je dois créer un dossier par semaine et dans lequel j'aimerais sauvegarder mon pdf, en fonction de la semaine (J'ai joint une fichier jpg pour l'architecture du dossier dans lequel se trouve notre fichier source).

Dans mon fichier, j'ai une cellule en BR7, dans laquelle j'ai créé la formule ="Semaine " & NO.SEMAINE(AO11;2), où AO11 est la case où l'on rentre la date du jour.

Comment puis-je faire pour insérer ma sauvegarde pdf dans le dossier de la bonne semaine, voire même créer le dossier s'il n'existe pas ?

Je vous fournit la feuille du classeur qui me pose problèmes, les autres feuilles n'étant pas utiles. dans la 1ère fenêtre, choisir "Interactive".

Merci d'avance pour tout ce que vous pourrez m'apporter.

representation d architecture

Bonjour,

Pour ton premier souci ... c'est simple ...

Range("K11, W11, AI11, K17, W17, AI17, K23, W23, AI23").Value = True

ric

Bonjour,

Si j'ai bien tout compris des soucis ...

Un essai ...

Option Explicit

Private Sub Sauvegarder_Click() 'Sauvegarde une copie en pdf du fichier avec la date du jour
Dim fichier As String
Dim QlSemaine As Byte
Dim Date_F As Date
Dim Dossier As String
Dim Chemin As String

    Date_F = Format(Date, "yyyy-mm-dd") ' Donne le format de date
    QlSemaine = Format(Date, "ww", vbMonday, vbFirstJan1)   ' numéro de la semaine en cours

    With Worksheets("Suivi")
        fichier = "\" & Date_F & "-GOF.pdf"     ' nom du fichier
        Dossier = ActiveWorkbook.Path & "\Suivi GOF Locotracteurs\" & "Semaine " & QlSemaine 'Enregistre à l'emplacement du fichier source

        test_repertoire (Dossier)   ' le test est plus bas

        Chemin = Dossier & fichier
        .ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    End With
End Sub

Private Sub SuiviRAZ_Click() 'vide les cases d'informations jounralières
    Range("C13:E15, O13:Q15, AA13:AC15, C19:E21, O19:Q21, AA19:AC21, C25:E28, O25:Q28, AA25:AC28").ClearContents 'Efface les cases dépôts du point entrées/sorties
    Range("K13:L15, W13:X15, AI13:AJ15, K19:L21, W19:X21, AI19:AJ21, K25:L28, W25:X28, AI25:AJ28").ClearContents 'Efface les cases Activités du point entrées sorties
    Range("AS26:AT37, AU34:AV43, AS44:AT49, AU46:AV51, AS52:AT53").ClearContents 'Efface les cases de validation des missions

    Range("K11, W11, AI11, K17, W17, AI17, K23, W23, AI23").Value = True
End Sub

Private Sub Suiviretour_Click() 'Affiche le Userform de confirmation de retour
    Suiviconfirm.Show
End Sub

Sub test_repertoire(Chemin As String)
Dim fs As Object

Set fs = CreateObject("Scripting.FileSystemObject")         ' initialisation de la variable

If fs.FolderExists(Chemin) Then                             ' le répertoire existe donc rien a faire
Else: fs.CreateFolder Chemin                                '  le répertoire n'existe pas donc on le créer
    End If
    Set fs = Nothing
End Sub

ric

Bonsoir ric,

Clairement, gères !

Merci beaucoup, ton code m'avance déjà énormément.

Pour les validations de données, j'ai juste remplacé ".Value = True" par ".Value = "Oui".

Pour la sauvegarde, le nouveau dossier se crée au bon endroit, avec le bon nom, c'est impeccable.

Je n'ai qu'un bug, c'est lors de la création du pdf, je reçois un message de bug, mais je ne trouve pas le problème.

Si tu trouves, ce serait super.

En tout cas, tu as déjà fait un super boulot, merci encore

bug enregistrement

Bonjour toutes et tous

coucou Ric

@Armelito

s'il s'agit de la feuille active :

  With ActiveSheet
'On donne au fichier PDF le nom de la feuille active par exemple
        fichier = .Name & ".pdf"
        Chemin = Dossier & fichier
'Création new document en .PDF
        .ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    End With

oups pas lu entièrement le code de Ric

crdlt,

André

Bonjour à tous,

Ici en dossier local ... je n'ai aucune erreur ...

À l'étape où cela s'arrête et le code se met en jaune ... place le curseur de la souris (sans cliquer) sur les mots "Chemin" ... "Dossiers" ... "fichier".

Une infobulle te montrera le contenu de ces variables > est-ce que ces contenus sont corrects où il y a une erreur dans le nom du dossier ou le nom du fichier du fichier ???

Si tout est beau et qu'il n'y a pas d'erreur > il reste une possibilité ... le droit d'écrire un .pdf dans le dossier créé sur le SharePoint.

Si ça semble être le droit d'écriture via Excel ... teste en limitant le chemin au dossier "Suivi GOF Locotracteurs".

Si cela passe pas encore, teste en limitant le chemin à "ActiveWorkBook.Path".

Sinon teste ainsi ...

    On Error Resume Next
        .ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
        On Error Resume 0

S'il n'y a plus d'erreur ... mais que le fichier .PDF n'est pas créé dans le dossier ... cela confirmera le manque de droit en écriture dans le dossier.

Si rien n'y fait ... mets l'exportation du pdf en commentaire et ajoute un bout de code pour y copier un fichier Excel, afin de tester si le droit d'écriture est limité au .pdf.

C'est difficile de dépanner sans pouvoir tester ... je n'ai pas accès à un SharePoint.

Dis moi tes observations ...

ric

Bonjour à tous,

Une idée de même en passant ...

Note : c'était une mauvaise idée ...

ric

Je viens de contrôler les variables.

  • xlTypePDF=0
  • xlQualityStandard=0
  • Chemin me donne ...Suivi GOF Locotracteurs\30/05/2020-GOF.pdf, au lieu de ...Suivi GOF Locotracteurs\2020-05-30-GOF.pdf
J'ai appliqué ta maxime "Un bon dépanneur : la touche F8 pour faire un Pas-à-Pas sur le code", et de là, j'ai changé "Dim Date_F As Date" en "Dim Date_F As String", et ça fonctionne.

Merci beaucoup pour le coup de main ça m'a fait gagné un temps fou et des maux de tête terribles !

Merci aussi à André qui s'est penché sur mon cas.

Bonjour à tous,

Je suis bien heureux que ce soit dépanné.

Blague ...

Un cheminot entre au bar ... que commande-t-il ?

ric

Tiens, marrant que tu demandes ça, vu que je travaille chez FRET SNCF...

Je ne l'avais pas, mais mon épouse propose, un TGV, un Très Grand Verre ?

Bonjour,

C'est une très vieille blague ...

La réponse est : 2 Rye (même prononciation que rail ... dû moins dans mon coin)

Bon, soyons plus sérieux pour ne pas se faire taper sur les doigts par les cousins Loranger (Dan et Bruno).

Bonjour à tous,

Je me permet de relancer ce sujet, car après avoir mis mon fichier sur le sharepoint de mon boulot, la sauvegarde en pdf ne marche plus.

En laissant le code tel quel, pas de plantage, mais pas de copie non plus.

En remplaçant les obliques inversés par des obliques dans le nom du dossier (Dossier = ActiveWorkbook.Path & "\Suivi GOF Locotracteurs\" & "Semaine " & QlSemaine & "\" devient Dossier = ActiveWorkbook.Path & "/Suivi GOF Locotracteurs/" & "Semaine " & QlSemaine & "/"), le code plante au contrôle du répertoire, en bas du code.

Du fait du plantage, si le dossier n'existe pas, il n'est pas créé.

Je pense que c'est une bricole, mais je ne la trouve pas.

Merci d'avance pour votre aide.

Bonjour,

Ce n'est peut-être pas toutes les "\" qui ont été changé pour "/".

Essaie ainsi ... j'ai ajouté le ligne "Replace" ....

Private Sub Sauvegarder_Click() 'Sauvegarde une copie en pdf du fichier avec la date du jour
Dim fichier As String
Dim QlSemaine As Byte
Dim Date_F As String
Dim Dossier As String
Dim Chemin As String
    Range("AU50:AV51").Value = "X"  'Valide la case de la sauvegarde avant d'enregistrer
    Date_F = Format(Date, "yyyy-mm-dd") ' Donne le format de date
    QlSemaine = Format(Date, "ww", vbMonday, vbFirstJan1)   ' numéro de la semaine en cours
    With Worksheets("Suivi")
        fichier = Date_F & "-GOF.pdf"     ' nom du fichier
        Dossier = ActiveWorkbook.Path & "\Suivi GOF Locotracteurs\" & "Semaine " & QlSemaine & "\" 'Enregistre à l'emplacement du fichier source

        Dossier = Replace(Dossier, "\", "/")  ' << ligne ajoutée

        test_repertoire (Dossier)   ' le test est plus bas
        Chemin = Dossier & fichier
        .ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    End With
End Sub

ric

Bonsoir ric,

J'ai essayé ton code, et ça ne marche pas.

Quand je sauvegarde, il me met un code 52 de nom ou numéro de fichier incorrect. Le souci, c'est qu'en mettant le curseur sur le bug du test de création du répertoire, à la fin du code de la feuille, la fenêtre de lecture n'est pas assez grande pour tout lire. Le début semble bon, donc je ne sais pas.

ça m'énerve que le code original fonctionne si je simule l'arborescence de mon sharepoint sur mon disque local, mais que ça ne marche plus sur le sharepoint même.

En tout cas, merci du temps que tu me consacres.

Cordialement,

Armelito

pb chemin erreur d execution 52

Le petit up du vendredi

Bonjour,

Je ne suis pas sûr que tu y trouveras une solution fonctionnelle ...

Comme je l'ai préalablement mentionné, je n'ai pas accès à un SharePoint pour effectuer des tests ...

Je te laisse à cette lecture de différents articles se rapportant à la création de dossiers sur SharePoint ...

Si tu ne lis pas l'anglais, il y a toujours Google/traduction

https://translate.google.ca/?hl=fr&tab=wT

Have a nice weekend ...

ric

Bonsoir ric,

Merci pour la lecture, je suis en train d'y regarder.

J'ai aussi fait un test tout bête, dans le test répertoire, j'ai remplacé la création du dossier par une MsgBox.

Du coup, quand je sauvegarde, la MsgBox apparait, alors que le dossier existe, et quand je valide le message, il me crée mon fichier dans le bon dossier.

Le souci vient donc du contrôle, car ce dernier ne voit pas que le dossier est bien créé.

J'ai remarqué aussi quelque chose, mais je ne sais pas si c'est gênant.

Quand on clique sur la sauvegarde, on lance "test_repertoire (Dossier)", mais le test se fait sur le chemin, donc sur le dossier et le fichier.

pb test repertoire

Bonjour toutes et tous

coucou Ric

@Armelito

en essayant de placer le End IF après le Set fs = Nothing

EDIT: recoucou Ric ok merci pour l'info

crdlt,

André

Bonjour à tous,

J'ai remarqué aussi quelque chose, mais je ne sais pas si c'est gênant.

Quand on clique sur la sauvegarde, on lance "test_repertoire (Dossier)", mais le test se fait sur le chemin, donc sur le dossier et le fichier.

J'avoue qu'il y a confusion, mais seulement confusion de nom.

Chemin de la macro "Sauvegarder_Click" n'est pas le même que Chemin de la macro "test_repertoire"

Pour éliminer la confusion, l'on peut changer la variable de la macro "Sauvegarder_Click" ainsi ...

Sub test_repertoire(LeTrajet As String)
Dim fs As Object
Set fs = CreateObject("Scripting.FileSystemObject")     ' initialisation de la variable
If fs.FolderExists(LeTrajet) Then                       ' le répertoire existe donc rien a faire
Else: fs.CreateFolder LeTrajet                          '  le répertoire n'existe pas donc on le créer
    End If
    Set fs = Nothing
End Sub

@Andre13 > Débogage > Compiler VBAProject donnera une erreur de compilation si l'on ajoute un "End If"

ric

Bonjour à tous,

Tout d'abord, merci de vous pencher sur mes problèmes, c'est sympa.

J'ai mis mon fichier en pratique avec mon collègue, il fonctionne plutôt pas mal.

Je lui ai évoqué mon souci de création de dossier lors de la sauvegarde, et après réflexion, nous avons de nombreuses occasions de créer le dossier de la semaine, donc j'ai juste modifier le code pour mettre un message pour vérifier que le dossier a bien été créé.

Maintenant, il tourne impeccable.

J'ai juste un dernier détail à régler, car lorsque je RAZ, le tableau d'acheminements retire bien les lignes ou l'acheminement s'est bien passé, mais il retire aussi les lignes où nous n'avons pas renseigné si l'acheminement s'est réalisé ou pas.

ex : La ligne 4 n'est pas renseignée, et le RAZ l'efface.

Je vais y regarder, mais si vous voyez la solution, je prends aussi

code acheminements apres raz avant raz
Rechercher des sujets similaires à "reintialiser validation donnees"