Numéro de devis automatique qui se change à chaque enregistremen

Résolu
julie13300 Messages postés 23 Statut Membre -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai fait une macro pour que mon numéro de devis se change automatiquement, voici mon code :

Sub effacer_et_numero()
'
' effacer_et_numero Macro
'

'
Range("A13:G15,E4,D17,E17,F17,D18,E18,F18,D19,E19,F19,D20,E20,F20,B22,C22,D22,E22,F22,B23,C23,D23,E23,F23,B24,C24,D24,E24,F24,B25,C25,D25,E25,F25,C27,E28").Select
Selection.ClearContents

If Range("I5").Value <> 1 Then
Range("E5").Value = Range("E5").Value + 1
End If

End Sub

Avec ce code ça fonctionne mais je suis obligée de reprendre la dernière facture faite alors que je voudrais que ca prenne en compte l'enregistrement et que je puisse réouvrir que mon modèle et non pas la dernière facture

Est ce possible ?

merci d'avance

15 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonsoir,

    Essaye comme cela avec une simplification de ton code

    Sub effacer_et_numero()
    '
    Range("E4,A13:G15,D17:F20,B22:F25,B27,F28").ClearContents
    If Range("I5").Value <> 1 Then
    Range("E5").Value = Range("E5").Value + 1
    End If
    ActiveWorkbook.Save
    End Sub
    1
    1. julie13300 Messages postés 23 Statut Membre
       
      Merci

      C'est exactement ce que je voulais

      Merci beaucoup
      0
  2. phadeb Messages postés 91 Statut Membre 21
     
    Bonjour,

    Pourrais tu mettre un exemple concret ainsi que le résultat attendu ?

    Car j'ai bien peur de ne pas comprendre le besoin sans le contexte

    --
    0
  3. julie13300 Messages postés 23 Statut Membre
     


    Je vous fais une capture du haut de mon modèle où il y a mon numéro de devis.
    Dans l'état actuel des choses je dois reprendre à chaque fois le dernier devis que j'ai fait pour faire fonctionner mon numéro automatique.

    Je voudrais pouvoir inclure dans le code quelque chose qui change le numéro à chaque enregistrement de devis, ainsi je reprends simplement mon modèle et pas le dernier devis fait

    j'espère que ca sera plus compréhensible :)
    0
  4. phadeb Messages postés 91 Statut Membre 21
     
    C'est toujours très flou sans un exemple concret car juste avec cette capture, je n'ai toujours pas de contexte.

    Y'a t-il d'autres codes macro ?

    Comment sont disposés les devis ? Sur une seule feuille à la suite ? Sur plusieurs feuilles ?

    Si on part de l'hypothèse que vous voulez garder un modèle sans la facture mais juste avec le numéro, alors il faudra mettre un compteur quelquepart dans le classeur qui sera incrémenté à chaque nouveau devis. Il peut être mis dans la même feuille mais caché dans une cellule non affichée Z1 par exemple, ou bien en caractère blanc sur blanc dans une cellule affichée A1 par exemple.

    Si vous choisissez par exemple de le mettre dans A1, il faudra rajouter ce code :

    'incrémenter la valeur invisible
    Range("A1").Value = Range("A1").Value +1
    'copier le nouveau numéro
    Range("E5").Value = Range("A1").Value

    Sinon, une autre méthode consisterai à

    1- dupliquer la feuille du modèle
    2- renommer la nouvelle feuille avec un nom parlant "devis_en_cours"
    3- mettre le numéro du dernier devis +1 dans la cellule E5 de "devis_en_cours"
    --
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. julie13300 Messages postés 23 Statut Membre
     


    Oui j'ai déjà mis sur la même feuille un bouton qui remet tout à zéro et qui incrémente à chaque fois mon numéro de devis.

    donc exemple: j'ouvre mon modèle je fais mon devis puis je l'enregistre sous un nom différent que je mets dans un dossier. Si je veux faire un autre devis si j'ouvre à nouveau le modèle et que je clique sur le bouton ça me remet au numéro 1

    Si je veux que ca mette 2 je dois réouvrir le devis 1 appuyer sur le bouton et là j'ai le 2 qui s'affiche

    Mais je ne voudrais pas ouvrir à chaque fois le dernier devis mais uniquement mon modèle

    On ne peut pas mettre de pièce jointe ici? car j'aurai pu t'envoyer le classeur ça aurait plus clair
    0
    1. phadeb Messages postés 91 Statut Membre 21
       
      Pour info on peut mettre une pièce jointe ici

      https://www.cjoint.com/
      0
  7. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    si je comprends ton dernier post
    clic droit sur l'onglet de ta feuille/Visualiser le code
    colle ce code, puis enregistre ton fichier et teste le

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    On Error Resume Next
    Range("E4,A13:G15,D17:F20,B22:F25,B27,F28").ClearContents
    If Range("I5").Value <> 1 Then
    Range("E5").Value = Range("E5").Value + 1
    End If
    ActiveWorkbook.Save
    End Sub
    0
    1. julie13300 Messages postés 23 Statut Membre
       
      Bah j'aurai mieux fait de pas toucher , car là ça me dit que j'ai plus de macro, donc c'est pas fini

      faut que je recommence tout :-(
      0
  8. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,
    As tu testé mon dernier code post 6
    0
    1. julie13300 Messages postés 23 Statut Membre
       
      re

      non, mais je le testerai demain car là je dois quitter

      Ca sera mieux ?
      0
  9. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,
    alors pas de retour !
    si ton problème est résolu confirme le nous que l'on passe le statut de la discussion en résolu
    Merci
    0
    1. julie13300 Messages postés 23 Statut Membre
       
      Bonjour

      Bon j'ai remis ton premier code qui fonctionne mais n'est pas enregistré en modèle l'extension est en .xlsm

      Je n'arrive pas autrement

      Quel est l'avantage du deuxième code stp ?

      Cordialement
      0
      1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147 > julie13300 Messages postés 23 Statut Membre
         
        Re,
        essaye le code ci dessous
        0
  10. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Il vaudrais mieux soit traiter ta demande à l'ouverture du fichier ou en deux temps effacement des données à l'enregistrement et activer le compteur à l'ouverture du fichier.
    essaye comme cela, clic droit sur l'onglet de ta feuille/Visualiser le code/ouvre la Thiswokbook
    et colle ce code

    Private Sub Workbook_Open()
    On Error Resume Next
    Range("E4,A13:G15,D17:F20,B22:F25,B27,F28").ClearContents
    If Range("I5").Value <> 1 Then
    Range("E5").Value = Range("E5").Value + 1
    End If
    ActiveWorkbook.Save
    End Sub

    Qui a t'il dans ta cellule I5 qui conditionne le compteur
    0
  11. julie13300 Messages postés 23 Statut Membre
     
    re

    il y a 0

    j'ose plus toucher

    là quand j'ai rempli mon devis je l'enregistre avec le nom du client ce qui me génère un autre fichier

    et quand j'ouvre mon fichier d'origine toutes les cellules sont effacées il ne reste que le numéro de devis que j'active avec mon bouton effacer

    donc pour l'instant je crois que je vais laisser comme ça car je galère trop
    0
    1. phadeb Messages postés 91 Statut Membre 21
       
      J'espère que tu as fait des sauvegardes
      0
  12. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,
    mais c'est normal que sur ton fichier modèle les cellules s'effacent, c'est ton code
    Range("A13:G15,E4,D17,E17,F17,D18,E18,F18,D19,E19,F19,D20,E20,F20,B22,C22,D22,E22,F22,B23,C23,D23,E23,F23,B24,C24,D24,E24,F24,B25,C25,D25,E25,F25,C27,E28").Select
    Selection.ClearContents

    que j'ai simplement condensé
    mon dernier code efface et numérote ton compteur sur le fichier modèle qu'a l'ouverture de ce dernier

    il faut compléter le code de sorte à enregistrer sous pour dupliquer le fichier sans le code VBA
    je te proposerais un code demain
    0
  13. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,
    J'ai un peu de temps pour me pencher sur ta demande
    si je comprends bien tu veux générer des devis à partir d'un fichier modèle
    alors ce qu'Excel sait faire
    - Dupliquer une feuille exemple Devis soit au format XLS, XLSX ou PDF
    - Nommer tes copies en fonction du numéro facture ou Nom du client
    - Archiver tes devis dans un répertoire
    - Effacer et changer le numéro de ta facture dans ton modèle pour devis suivant
    Es ce cela que tu veux
    0
    1. julie13300 Messages postés 23 Statut Membre
       
      Bonjour Mike

      Oui c'est exactement cela

      Avec ton premier code ça fonctionne. Je l'ai laissé en xlsm

      C'est peut être pas très complet mais ça fonctionne :-)

      Si tu me donnes ton mail je t'envoies le classeur pour que tu vois ce que j'ai fait mais faut pas se moquer :-) je ne suis pas du tout une pro des macros
      0
  14. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    l'intérêt d'un forum est le partage du savoir alors on va essayer dans un premier temps de se comprendre
    commence par créer un Dossier que tu nommes comme tu veux, exemple Devis.
    dupliquer ton fichier Excel que tu enregistres ou colles dans le Dossier Devis que tu viens de créer, dans ce même dossier tu crées un nouveau dossier que tu nommes Archives
    ouvre le fichier clic droit sur l'onglet de ta feuille/Visualiser le code/Insertion Module et colle ce code
    Sub Archivage_Devis()
    '---------------------------------------Création du fichier temporaire
    Application.DisplayAlerts = False '-------Annulation des alertes
    '---------------------Nom du fichier à créer extension xls
    chemin = ActiveWorkbook.Path
    nom = [B5].Value & ".xls" 'nom du nouveau classeur dans cellule et définir extension si différente d'application
    ActiveSheet.Shapes.Range(Array("Bouton")).Visible = False
    Sheets("Feuil1").Copy
    ActiveWorkbook.SaveAs chemin & "\Archives\" & nom, FileFormat:=xlExcel8 ' ou adresse si le nom est dans une cellule Range("E2").Value & ".xls"
    ActiveWindow.Close
    Application.DisplayAlerts = True '-------rétablissement des alertes
    '---------------------------------------Après l'archivage le fichier se réinitialise
    ActiveSheet.Shapes.Range(Array("Bouton")).Visible = True
    Range("E4,A13:G15,D17:F20,B22:F25,B27,F28").ClearContents
    If Range("I5").Value <> 1 Then
    Range("E5").Value = Range("E5").Value + 1
    End If
    ActiveWorkbook.Save
    End Sub


    sur ta feuille de calcul crée un simple bouton avec la barre formulaire
    et renomme le tout simplement Bouton
    clic droit sur le bouton/Affecter une macro et pointe sur le code Devis
    tu peux également faire un clic droit sur le bouton/Modifier le texte pour changer le texte sur le bouton (on peut également utiliser le bouton activex, mais verra plus tard)
    saisir sur ta feuille en B5 le nom que tu veux donner à ton devis, lorsque tu cliqueras sur le bouton un devis sera créé à partir de ta feuille et archivé automatiquement dans le dossier Archives et avoir ton modèle vierge avec un compteur en E5 +1
    A toi de jouer, si tu n'y arrives pas, on échangera les fichiers
    A+
    Mike-31

    Je suis responsable de ce que je dis, pas de ce que tu comprends...
    0
    1. julie13300 Messages postés 23 Statut Membre
       
      Bonjour

      Je voulais juste te montrer ce que j'avais fait pour que tu puisses comprendre mes erreurs car erreur il y a c'est sur.

      J'ai donc suivi à la lettre ce que tu m'as mis, j'ai même changer le nom de mon bouton puisqu'il était déjà créé en mettant Bouton pour vraiment suivre ton post pas à pas.

      Où ca pêche c'est quand j'arrive à "saisir sur ta feuille en B5..........

      là je comprends pas pourquoi tu me dis ça, déjà en B5 je ne peux rien mettre car j'ai l'adresse de la Sté, de plus même si je mets en I5 par ex , je comprends pas car je veux pas un nom mais un chiffre.
      Enfin je l'ai quand meme fait, j'ai mis en I5 "nom" pour tester, j'ai modifié dans le code B5 en I5 et j'ai mis en extension xlsm

      mais ça fonctionne pas

      si je regarde le code que j'ai mis dans ThisWorkbook, ainsi que dans le module que j'ai inséré à la fin il y a en rouge <code>End Sub et tout en haut surligné en jaune Sub Devis()

      Il doit manquer quelque chose

      en tout cas je te remercie du temps que tu m'accordes


      Julie
      0
  15. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    anonymise le fichier s'il contient des données confidentielles, ensuite
    1) Clic sur ce lien https://www.cjoint.com/
    2) Clic sur le bouton Parcourir pour sélectionner ton fichier
    3) Clic sur le bouton Créer le lien en bas de la page
    4) Au bout de quelques secondes en haut de la page en bleu souligné un lien sera généré, tu le sélectionnes et tu le copies soit dans une réponse
    soit tu clic sur mon pseudo puis sur lui écrire un message
    0
  16. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    ton lien n'est pas bon, il ne semble pas complet
    0