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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 166
    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 166
    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 : 1278
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
    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 166
    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 166
    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

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, 22h56
  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, 12h51
  3. Réponses: 2
    Dernier message: 24/04/2012, 13h22
  4. Réponses: 2
    Dernier message: 17/03/2011, 21h45
  5. faire une macro pour un sous formulaire
    Par db48752b dans le forum Access
    Réponses: 2
    Dernier message: 18/09/2006, 23h14

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