IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Faire une macro pour la facturation


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2019
    Messages : 13
    Par défaut Faire une macro pour la facturation
    Bonjour,

    N’étant pas un expert, je viens demander votre aide aujourd’hui pour une macro concernant la facturation. Je vous explique ma problématique. J’ai 16 fichiers Excel : 1 fichier qui liste les 15 templates types pour la facturation et 15 fichiers qui correspondent à une facture différente. Ainsi dans mon premier fichier j’ai un tableau avec 15 lignes où il y a écrit sur chaque ligne « Template n° » (Ligne 1 : Template n°1, Ligne 2 : Template n°2 etc). Ma volonté est la suivante : Faire 15 boutons en face de chaque ligne et leur attribuer 15 macros différentes.

    Je souhaite que ma macro fasse la chose suivante :

    - Quand je clique sur le bouton en face de « Template n°1 », que cela m’ouvre le fichier Template n°1.
    - Que cela incrémente automatique sur ma cellule AO2 (du document Template n°1) un numéro de commande (n+1).
    - Que cela sauvegarde le document.
    - Que la feuille de calcul soit bloquée.

    Voici les 4 choses que j’aimerais pour ma macro (Ainsi, les utilisateurs n’auront plus qu’à faire « Enregistre sous » et compléter la facture sans modifier le template de base. Et je souhaite « Enregistrer » dans ma macro pour que l’on garde en mémoire le numéro de commande précédent pour que le +1 se fasse toujours avec le dernier n° de commande et que l’on ne revienne pas à 0). Ensuite, je n’aurais plus qu’à faire mes 14 autres macros en changeant simplement le chemin.

    Est-ce possible ? Je suis un peu perdu. Merci d’avance,

    Bonne journée.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Ce que tu demandes devrait faire l'objet d'au moins quatre nouvelles discussions.
    Concernant ta deuxième question (l'incrémentation d'un numéro). Voir ce billet Excel – Incrémenter un numéro de facture, devis, à l’aide d’une fonction personnalisée
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Rafap Voir le message
    Ma volonté est la suivante : Faire 15 boutons en face de chaque ligne et leur attribuer 15 macros différentes.
    Il serait bien plus simple de faire un seul bouton qui puisse lancer l'un des 15 template au choix.
    Le choix tu template souhaité pourrait se faire avec une liste déroulante ou, encore plus simple, en décidant qu'on utilise celui de la ligne active au lancement de la macro.

    - Quand je clique sur le bouton en face de « Template n°1 », que cela m’ouvre le fichier Template n°1.
    Méthode Open de Workbooks : https://docs.microsoft.com/fr-FR/off...workbooks.open

    - Que cela incrémente automatique sur ma cellule AO2 (du document Template n°1) un numéro de commande (n+1).
    Utiliser la propriété Value du Range référant la cellule souhaitée : https://msdn.microsoft.com/fr-fr/lib...3(v=office.15)

    - Que cela sauvegarde le document.
    Méthode Save de Workbook : https://docs.microsoft.com/fr-FR/off....workbook.save

    - Que la feuille de calcul soit bloquée.
    Qu'est-ce que tu veux dire par "bloquée" ?
    Si c'est ce que je pense, n'aurais-tu pas oublié l'étape "débloquer" en début de macro ?

    Et je souhaite « Enregistrer » dans ma macro pour que l’on garde en mémoire le numéro de commande précédent pour que le +1 se fasse toujours avec le dernier n° de commande et que l’on ne revienne pas à 0).
    Dans la mesure où ta macro n'intègre pas ce numéro de commande, il faudra que tu expliques à quoi il sert.
    Il est probable qu'il faudra garder une place quelque part dans ton fichier pour enregistrer le dernier numéro utilisé.

    Ensuite, je n’aurais plus qu’à faire mes 14 autres macros en changeant simplement le chemin.
    Il serait beaucoup plus simple de n'en faire qu'une qui serve pour les 15 modèles différents.

  4. #4
    Membre habitué
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2019
    Messages : 13
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub Test()
    '
    ' Test
    '
     
    '
        Workbooks.Open Filename:= _
            "C:\Users\" & VBA.Environ("USERNAME") & "\Template1"
     
        Range("AN2").Select
        Dim num As Integer
        num = Range("AN2").Value
        num = num + 1
        Range("AN2").Value = num
        ActiveWorkbook.Save
        Sheets("BC").Protect
    End Sub
    Merci de vos réponses, pour le moment, j'ai ça, et cela semble fonctionner pour un template. Néanmoins, je ne sais pas comment maximiser en faisant qu'une macro pour les 15 et pas 15 macros avec le chemin différent.

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Pour info, ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Range("AN2").Select
        Dim num As Integer
        num = Range("AN2").Value
        num = num + 1
        Range("AN2").Value = num
    Peut se simplifier en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range("AN2").Value = 1 + Range("AN2").Value
    Néanmoins, je ne sais pas comment maximiser en faisant qu'une macro pour les 15 et pas 15 macros avec le chemin différent.
    Ne sachant pas comment sont organisées tes données, il est difficile de répondre à ça.
    Il faudrait que tu présentes une copie d'écran de ton tableau de 15 modèles dont tu parles dans la demande.

  6. #6
    Membre habitué
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2019
    Messages : 13
    Par défaut
    Merci de la simplification !

    Nom : Capture tableau Commande.PNG
Affichages : 1321
Taille : 11,8 Ko

    Voici la capture d'écran. Dans ma tête, quand on clique sur la flèche, ça ouvre le fichier en question (Ils sont tous dans le même dossier, ont juste un nom différent Template1, Template2 etc). Et dès que ça ouvre, ça incrémente le n+1. Cela sauvegarde l'incrémentation (Pour les prochaines fois pas repartir de 0). Et je bloque pour pas que des modifications soient faites par erreur et ça force à faire "Enregistrer Sous". Une idée ? Ou ma façon est la moins pire ? Merci.

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Ton entête "Template", c'est quelle cellule ?

  8. #8
    Membre habitué
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2019
    Messages : 13
    Par défaut
    L'entête "Template" c'est la cellule B4.

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je viens seulement de comprendre, du moins je l'espère, que c'était le nom des "Template" qui devait être incrémenté.
    Si j'ai bien compris, une solution très simple est de mettre une formule de concaténation avec le mot "Template" suivi du numéro de la ligne - 1
    Soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ="Template" & LIGNE()-1
    Tu peux aussi faire en sorte que ce soit bien structuré sur 2 ou 3 caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ="Template" & TEXTE(LIGNE()-1;"000")
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    En partant de l'hypothèse que le code de ton post #4 est correct pour un fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test()
        Dim Choix As Range
        Set Choix = Selection.Offset(0, 3 - Selection.Column)
        Workbooks.Open Filename:= "C:\Users\" & VBA.Environ("USERNAME") & "\" & Choix.Value
        Range("AN2").Value = 1 + Range("AN2").Value
        ActiveWorkbook.Save
        Sheets("BC").Protect
    End Sub
    Tu sélectionnes n'importe quelle ligne de ton tableau, tu lances la macro et c'est le template correspondant qui s'ouvrira.

    C'est du code tapé à l'arrache directement sur le forum et non testé. Il se peut donc que tu ais du débugage à faire.

  11. #11
    Membre habitué
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2019
    Messages : 13
    Par défaut
    Je crois que l’on s’est mal compris. J’ai un dossier « Template » avec 15 fichiers Excel ayant des noms différents, des noms de « code » correspondant à des factures différentes, pour la facilité de l’explication je les ai résumés à juste « Template1 », « Template2 » etc … Ici. Dans mon dossier « Template », j’ai par-exemple un fichier « 0099-Facture pour… », « 0550-Facture pour… » etc. Et j’ai un fichier Excel qui récapitule (Le screen) l’ensemble de mes templates en précisant son nom et ce que c’est. Mon but (cf mon code qui fonctionne, c’est juste savoir s’il existe plus intuitif comme méthode) c’est quand on clique sur la flèche ça ouvre le fichier en question, ça incrément un numéro de commande (n+1), ça sauvegarde le template et ensuite ça le verrouille. L’utilisateur n’a plus qu’à faire « Enregistrer sous » pour le modifier tranquillement sur son poste.

  12. #12
    Membre habitué
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2019
    Messages : 13
    Par défaut
    Citation Envoyé par Menhir Voir le message
    En partant de l'hypothèse que le code de ton post #4 est correct pour un fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test()
        Dim Choix As Range
        Set Choix = Selection.Offset(0, 3 - Selection.Column)
        Workbooks.Open Filename:= "C:\Users\" & VBA.Environ("USERNAME") & "\" & Choix.Value
        Range("AN2").Value = 1 + Range("AN2").Value
        ActiveWorkbook.Save
        Sheets("BC").Protect
    End Sub
    Tu sélectionnes n'importe quelle ligne de ton tableau, tu lances la macro et c'est le template correspondant qui s'ouvrira.

    C'est du code tapé à l'arrache directement sur le forum et non testé. Il se peut donc que tu ais du débugage à faire.
    Merci ! J'ai compris ton idée et je pense que ça pourrait marcher car ça ouvrirait directement le bon en adaptant le chemin à la cellule, excellente idée. Je vais la tester dès que je peux, merci à toi, et je te fais un retour !

  13. #13
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,

    Pour ce qui est de la numérotation, j'avais donc bien compris dès le début, je te conseille donc la lecture du billet que je t'ai référencé où tu trouveras une fonction "clé sur porte" qui permet d'incrémenter les numéros en fonction de plusieurs critères.

    En ce qui concerne la sélection des fichiers, je ne peux que te conseiller la solution que t''a proposé Menhir, que je salue au passage, à savoir une liste déroulante t'affichant les templates présents dans le répertoire.
    C'est ainsi que je pratique toujours. C'est bien plus simple à mettre en place et de plus cela permet d'ajouter, de supprimer ou de modifier les noms des modèles sans que cela ne perturbe le bon déroulement de ton application

    Petit conseil pour rendre pérenne ton application place les répertoires "Template", "Document", etc. comme sous répertories du dossier où tu places ton classeur "Application". Cela te permet de déplacer à tout moment l'ensemble des fichiers tout en conservant la bonne marche de ton programme et ainsi tu ne dois pas "hard coder" le nom du répertoire

    Petit exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub TestFullname()
      MsgBox "Fullname  = " & ThisWorkbook.Path & "\Template\" & "Template 1"
    End Sub
    L'instruction ThisWorkbook.Path te renvoie le chemin complet du classeur où se trouve le code VBA
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  14. #14
    Membre habitué
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2019
    Messages : 13
    Par défaut
    Bonjour,

    Merci beaucoup de toutes ces précisions. Sur le code précédemment donné la ligne du selection.offset ne fonctionne pas. Je prends note de la liste déroulante mais du coup chaque utilisateur devra choisir manuellement le bon template ?

  15. #15
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je prends note de la liste déroulante mais du coup chaque utilisateur devra choisir manuellement le bon template ?
    Tu as écris en ouverture de cette discussion
    Je souhaite que ma macro fasse la chose suivante :
    - Quand je clique sur le bouton en face de « Template n°1 », que cela m’ouvre le fichier Template n°1.
    Explique moi ce qui fait la différence "manuellement" entre cliquer sur un bouton ou sélectionner un élément dans une liste
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  16. #16
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Rafap Voir le message
    Sur le code précédemment donné la ligne du selection.offset ne fonctionne pas.
    Si tu veux qu'on puisse comprendre d'où vient le problème, il va falloir être plus descriptif...

  17. #17
    Membre habitué
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2019
    Messages : 13
    Par défaut
    Citation Envoyé par Menhir Voir le message
    En partant de l'hypothèse que le code de ton post #4 est correct pour un fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test()
        Dim Choix As Range
        Set Choix = Selection.Offset(0, 3 - Selection.Column)
        Workbooks.Open Filename:= "C:\Users\" & VBA.Environ("USERNAME") & "\" & Choix.Value
        Range("AN2").Value = 1 + Range("AN2").Value
        ActiveWorkbook.Save
        Sheets("BC").Protect
    End Sub
    Tu sélectionnes n'importe quelle ligne de ton tableau, tu lances la macro et c'est le template correspondant qui s'ouvrira.

    C'est du code tapé à l'arrache directement sur le forum et non testé. Il se peut donc que tu ais du débugage à faire.
    Alors quand je mets ce code-ci, j'ai une erreur sur la ligne en gras (Quand je clique sur débugage). Et j'ai une autre problématique. Sur mon code de base qui fonctionne à 3/4. En effet, quand les utilisateurs cliquent sur "Enregistrer Sous", ils peuvent enregistrer le template sur leur espace de travail MAIS la feuille de calcul reste bloquée (avec le .Protect) et ne peuvent pas travailler dessus, ils sont obligés de la débloquer manuellement. Vous savez comment faire ? Le but c'est qu'aucun utilisateur ne modifie par inadvertance le fichier vierge du template mais ensuite en l'enregistrant puisse travailler dessus. Merci !

    La liste déroulante c'est pas mal aussi, ça passe par une macro avec chaque choix = un chemin ?

  18. #18
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Rafap Voir le message
    Alors quand je mets ce code-ci, j'ai une erreur sur la ligne en gras (Quand je clique sur débugage).
    Et on peut connaitre le message d'erreur ou c'est top secret ?
    Ca commence à être lassant de devoir te tirer les vers du nez...

    En effet, quand les utilisateurs cliquent sur "Enregistrer Sous", ils peuvent enregistrer le template sur leur espace de travail MAIS la feuille de calcul reste bloquée (avec le .Protect) et ne peuvent pas travailler dessus, ils sont obligés de la débloquer manuellement. Vous savez comment faire ? Le but c'est qu'aucun utilisateur ne modifie par inadvertance le fichier vierge du template mais ensuite en l'enregistrant puisse travailler dessus. Merci !
    Comme depuis le début on ne comprends pas dans quel fichier tu veux incrémenter une valeur ni quel fichier tu veux protéger, je suis parti du principe que tu ne racontais pas des craques en disant j'ai ça, et cela semble fonctionner pour un template.
    Maintenant, tu dis que ça ne fonctionne qu'aux 3/4.

    Tant que tu n'auras pas fait une description raisonnablement précise et explicite de ta demande, je n'irai pas plus loin.

  19. #19
    Membre habitué
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mars 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Mars 2019
    Messages : 13
    Par défaut
    Je vous prie de m’excuser si je n’ai pas été clair. Je récapitule.

    Chaque utilisateur dispose de OneDrive. Dans ce OneDrive, il y a un dossier « Template ». Dedans, on y trouvera 15 modèles de factures différents en fonction du type de facturation souhaitée portant des noms avec des références tels que « 0099 – Facture FR Fournisseur A », « 0010 – Facture EN Fournisseur B » etc … Ces templates doivent rester inchangés LE SEUL changement qui doit apparaître dans ces templates et le numéro de commande qui s’incrémente. Chaque utilisateur dispose sur son bureau du dossier « Référence Factures » où comme le screen le montre chaque ligne représente un template. Voici le process souhaité :

    1) Je suis un utilisateur. J’ai une facture à faire. Je clique sur mon fichier « Référence Factures » sur mon bureau. Je choisis le type de facture que je dois faire, prenons l’exemple que je veuille faire une facture pour le fournisseur A. Je clique sur la flèche bleue à côté du nom de « 0099 – Facture FR Fournisseur A ».
    2) Mon fichier template situé sur le OneDrive s’ouvre et il incrémente automatique un numéro (n+1 par-rapport au précédent). Le template s’enregistre (Pour que le numéro soit gardé en mémoire pour les prochaines fois). Ma feuille de calcul se met en lecture seule.
    3) Ainsi, l’utilisateur est obligé de faire « Enregistrer Sous » pour enregistrer le template sur son bureau et travailler sur cette version enregistrée pas celle d’origine.

    Ma macro c’est l’étape 2. Elle me permet actuellement d’ouvrir le fichier en question en cliquant sur la flèche, d’incrémenter mon numéro, de sauvegarder et de bloquer ma feuille de calcul. Le problème, c’est qu’en enregistrant sous le template, la protection reste, et c’est toujours bloqué, l’utilisateur doit désactiver la protection pour pouvoir travailler dessus. Voici ma problématique actuelle.

    Concernant ton code, je me suis trompé dans le chemin et ça marche je crois ! Merci.

Discussions similaires

  1. [Toutes versions] Est-il possible de faire une macro pour une action recherche & remplace ?
    Par Student16 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/05/2018, 23h56
  2. [XL-2007] Faire une macro pour une baisse de 2 valeurs consécutives
    Par lepapillon2015 dans le forum Excel
    Réponses: 7
    Dernier message: 16/04/2015, 13h51
  3. Réponses: 2
    Dernier message: 24/04/2012, 14h22
  4. Réponses: 2
    Dernier message: 17/03/2011, 22h45
  5. faire une macro pour un sous formulaire
    Par db48752b dans le forum Access
    Réponses: 2
    Dernier message: 19/09/2006, 00h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo