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 :

enregistrement facture au format xlsm


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    retraite
    Inscrit en
    Février 2019
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Février 2019
    Messages : 21
    Par défaut enregistrement facture au format xlsm
    Bonjour

    Pouvez vous m aider je suis bloquer pour l'enregistrement de ma facture au format excel afin de la réouvrir pour pouvoir la modifier en cas d'erreur.
    Mes recherches sont infructueuses sur le net
    Je vous joins le fichier

    En vous remerciant de votre compréhension

    https://share.orange.fr/#rKDyDUfIkD43a4495c60

    Orguyrine

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    ouvrir des fichiers avec macro c'est jamais une bonne chose, aussi je te suggère pour optimiser tes chances de retour, de nous fournir plutôt le code VBA que tu utilises actuellement et nous indiquer à quel endroit tu rencontrerais des difficultés
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre averti
    Homme Profil pro
    retraite
    Inscrit en
    Février 2019
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Février 2019
    Messages : 21
    Par défaut
    Citation Envoyé par Jean-Philippe André Voir le message
    Salut,

    ouvrir des fichiers avec macro c'est jamais une bonne chose, aussi je te suggère pour optimiser tes chances de retour, de nous fournir plutôt le code VBA que tu utilises actuellement et nous indiquer à quel endroit tu rencontrerais des difficultés
    Bonjour

    Je vous remercie de prendre mon problème en considération

    Dans mon fichier ci-dessus je voudrais créer une sauvegarde de la facture avec toutes les données . Pour éventuellement la modifier en cas d'erreur ou de modification importante.
    Je bloque complétement sur le code .je ne vois pas comment enregistrer avec le numero de facture plusieurs articles et comment pourvoir modifier cette facture sauvegardeée

    En vous remerciant de votre compréhension

    orguyrine

    https://share.orange.fr/#rKDyDUfIkD43a4495c60

  4. #4
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Pour Archiver
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Sub Archiver()
        Dim Lig As Long, i As Long, Col_f1 As Long
        Dim f1 As Worksheet, f2 As Worksheet
     
        Application.ScreenUpdating = False
        Set f1 = Sheets("Historique_facture")
        Set f2 = Sheets("Facture")
        Lig = f1.Range("A2").End(xlDown).Row + 1
        f1.Range("A" & Lig).Value = f2.Range("F9").Value
        f1.Range("B" & Lig).Value = f2.Range("D4").Value
        f1.Range("C" & Lig).Value = f2.Range("d5").Value
        f1.Range("D" & Lig).Value = f2.Range("C8").Value
        f1.Range("E" & Lig).Value = f2.Range("C9").Value
        f1.Range("F" & Lig).Value = f2.Range("C10").Value
        f1.Range("G" & Lig).Value = f2.Range("F30").Value
        f1.Range("H" & Lig).Value = f2.Range("F33").Value
        f1.Range("I" & Lig).Value = f2.Range("D7").Value
     
        Col_f1 = 10
        For i = 13 To 28
            If f2.Cells(i, "D") = "" Then Exit For
            f1.Cells(Lig, Col_f1) = f1.Cells(Lig, Col_f1) & "_" & f2.Cells(i, "B") & "_" & f2.Cells(i, "C") & "_" & f2.Cells(i, "D") & "_" & f2.Cells(i, "E") & "_" & f2.Cells(i, "F")
            f1.Cells(Lig, Col_f1) = Right(f1.Cells(Lig, Col_f1), Len(f1.Cells(Lig, Col_f1)) - 1)
            Col_f1 = Col_f1 + 1
        Next i
     
        f2.Range("D13:D28").ClearContents
        f2.Range("D5").ClearContents
        Afficher_prochain_N°_de_facture
     
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
    Pour restituer une facture archivée (se positionner sur une des cellules de la facture à restituer et cliquer sur le bouton, attention la facture archivée doit contenir au moins 1 article)
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub Restituer_facture_archivee()
        Dim L As Long, i As Long, DerLig As Long
     
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        Set f1 = Sheets("Historique_facture")
        Set f2 = Sheets("Facture")
     
        Lig = Selection.Row
        f2.Range("D13:D28").ClearContents
        f2.Range("D5").ClearContents
     
        f2.Range("F9").Value = f1.Range("A" & Lig).Value
        f2.Range("D4").Value = f1.Range("B" & Lig).Value
        f2.Range("d5").Value = f1.Range("C" & Lig).Value
        f2.Range("C8").Value = f1.Range("D" & Lig).Value
        f2.Range("C9").Value = f1.Range("E" & Lig).Value
        f2.Range("C10").Value = f1.Range("F" & Lig).Value
        f2.Range("F30").Value = f1.Range("G" & Lig).Value
        f2.Range("F33").Value = f1.Range("H" & Lig).Value
        f2.Range("D7").Value = f1.Range("I" & Lig).Value
     
        Sheets("Facture").Select
        L = 13
        For i = 10 To 26
            If f1.Cells(Lig, i) <> "" Then
                f1.Cells(Lig, i).Copy Destination:=f2.Cells(L, "B")
                L = L + 1
            End If
        Next i
     
        f2.Select
        DerLig = [B13].End(xlDown).Row
        Range("B13:B" & DerLig).TextToColumns Destination:=Range("B13"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
            :="_", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
            1)), TrailingMinusNumbers:=True
     
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
    Formule pour afficher le Prochain N° de facture. (pour remettre le bon N° après avoir réinjecter une facture archivée)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Afficher_prochain_N°_de_facture()
        Sheets("Facture").Range("F9").FormulaR1C1 = "=MAX(Historique_facture!C[-5])+1"
    End Sub
    Avec le fichier zippé
    https://mon-partage.fr/f/F3aSQzH7/

    Cdlt

  5. #5
    Membre averti
    Homme Profil pro
    retraite
    Inscrit en
    Février 2019
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Février 2019
    Messages : 21
    Par défaut
    Citation Envoyé par ARTURO83 Voir le message
    Bonjour,

    Pour Archiver
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Sub Archiver()
        Dim Lig As Long, i As Long, Col_f1 As Long
        Dim f1 As Worksheet, f2 As Worksheet
     
        Application.ScreenUpdating = False
        Set f1 = Sheets("Historique_facture")
        Set f2 = Sheets("Facture")
        Lig = f1.Range("A2").End(xlDown).Row + 1
        f1.Range("A" & Lig).Value = f2.Range("F9").Value
        f1.Range("B" & Lig).Value = f2.Range("D4").Value
        f1.Range("C" & Lig).Value = f2.Range("d5").Value
        f1.Range("D" & Lig).Value = f2.Range("C8").Value
        f1.Range("E" & Lig).Value = f2.Range("C9").Value
        f1.Range("F" & Lig).Value = f2.Range("C10").Value
        f1.Range("G" & Lig).Value = f2.Range("F30").Value
        f1.Range("H" & Lig).Value = f2.Range("F33").Value
        f1.Range("I" & Lig).Value = f2.Range("D7").Value
     
        Col_f1 = 10
        For i = 13 To 28
            If f2.Cells(i, "D") = "" Then Exit For
            f1.Cells(Lig, Col_f1) = f1.Cells(Lig, Col_f1) & "_" & f2.Cells(i, "B") & "_" & f2.Cells(i, "C") & "_" & f2.Cells(i, "D") & "_" & f2.Cells(i, "E") & "_" & f2.Cells(i, "F")
            f1.Cells(Lig, Col_f1) = Right(f1.Cells(Lig, Col_f1), Len(f1.Cells(Lig, Col_f1)) - 1)
            Col_f1 = Col_f1 + 1
        Next i
     
        f2.Range("D13:D28").ClearContents
        f2.Range("D5").ClearContents
        Afficher_prochain_N°_de_facture
     
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
    Pour restituer une facture archivée (se positionner sur une des cellules de la facture à restituer et cliquer sur le bouton, attention la facture archivée doit contenir au moins 1 article)
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub Restituer_facture_archivee()
        Dim L As Long, i As Long, DerLig As Long
     
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        Set f1 = Sheets("Historique_facture")
        Set f2 = Sheets("Facture")
     
        Lig = Selection.Row
        f2.Range("D13:D28").ClearContents
        f2.Range("D5").ClearContents
     
        f2.Range("F9").Value = f1.Range("A" & Lig).Value
        f2.Range("D4").Value = f1.Range("B" & Lig).Value
        f2.Range("d5").Value = f1.Range("C" & Lig).Value
        f2.Range("C8").Value = f1.Range("D" & Lig).Value
        f2.Range("C9").Value = f1.Range("E" & Lig).Value
        f2.Range("C10").Value = f1.Range("F" & Lig).Value
        f2.Range("F30").Value = f1.Range("G" & Lig).Value
        f2.Range("F33").Value = f1.Range("H" & Lig).Value
        f2.Range("D7").Value = f1.Range("I" & Lig).Value
     
        Sheets("Facture").Select
        L = 13
        For i = 10 To 26
            If f1.Cells(Lig, i) <> "" Then
                f1.Cells(Lig, i).Copy Destination:=f2.Cells(L, "B")
                L = L + 1
            End If
        Next i
     
        f2.Select
        DerLig = [B13].End(xlDown).Row
        Range("B13:B" & DerLig).TextToColumns Destination:=Range("B13"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
            :="_", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
            1)), TrailingMinusNumbers:=True
     
        Set f1 = Nothing
        Set f2 = Nothing
    End Sub
    Formule pour afficher le Prochain N° de facture. (pour remettre le bon N° après avoir réinjecter une facture archivée)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Afficher_prochain_N°_de_facture()
        Sheets("Facture").Range("F9").FormulaR1C1 = "=MAX(Historique_facture!C[-5])+1"
    End Sub
    Avec le fichier zippé
    https://mon-partage.fr/f/F3aSQzH7/

    Cdlt
    Bonjour

    Voici le code d'erreur sur la ligne set F2=Sheets("Historique_facture")

    En vous remerciant

    orguyrine

    Nom : Capture d’écran (62).png
Affichages : 232
Taille : 204,1 Ko

  6. #6
    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 orguyrine006 Voir le message
    Voici le code d'erreur sur la ligne set F2=Sheets("Historique_facture")
    Etant donné que ce code commande par Option Explicit (ce qui est une très bonne chose), il faut que tu déclares toutes les variable qui sont utilisées dans le code (de préférence avec leur type).

  7. #7
    Membre averti
    Homme Profil pro
    retraite
    Inscrit en
    Février 2019
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraite

    Informations forums :
    Inscription : Février 2019
    Messages : 21
    Par défaut remerciement
    Bonjour

    Je viens vous remercier tous pour votre aide .
    Maintenant je cherche à comprendre certaines astuces du code afin de progresser.

    Bien cordialement

    orguyrine

  8. #8
    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 orguyrine006 Voir le message
    Je vous joins le fichier
    Citation Envoyé par Jean-Philippe André Voir le message
    ouvrir des fichiers avec macro c'est jamais une bonne chose, aussi je te suggère pour optimiser tes chances de retour, de nous fournir plutôt le code VBA

    orguyrine006, as-tu lu la réponse #2 de Jean-Philippe André ?

Discussions similaires

  1. ouvrir fenêtre "Enregistrer sous" format xlsm forcé
    Par LaureneW dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 05/04/2019, 14h38
  2. enregistrement en format xlsm
    Par hebh dans le forum Excel
    Réponses: 5
    Dernier message: 20/09/2011, 16h22
  3. [MD2] enregistrer dans ce format
    Par razmott dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 17/01/2007, 13h43
  4. Générer une facture au format PDF
    Par lama85 dans le forum Langage
    Réponses: 1
    Dernier message: 21/08/2006, 18h46
  5. Enregistrer un texte formaté RTF d'un RichEdit dans un Blob
    Par dem dans le forum Bases de données
    Réponses: 2
    Dernier message: 31/01/2005, 10h05

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