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 :

Code vba incrémentation N°


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    alger
    Inscrit en
    Novembre 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : alger
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2015
    Messages : 34
    Par défaut Code vba incrémentation N°
    Bonsoir tt le monde j’ai un souci avec incrémentation n° automatique

    Voila j’ai classeur avec deux feuils
    feuil Facture
    feuil ARCHIVESFAC


    Dans la feuil « Facture » j’ai un Bouton nommé sauvegarder, la Cellule « E6 »=date aujourd’hui et la Cellule « E8 » = n° facture qui change a chaque Sauvegarde

    j’ai utilise la formule suivant dans "E8" feuil facture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ="Fac-"&TEXTE(STXT(ARCHIVESFAC!A3;5;3)+1;"000")&"-"&MAJUSCULE(TEXTE(E6;"MMM"))
    pour avoir ce numéro FAC-001-JUIL

    Malheureusement quand je clic sur le Bouton sauvegarde a qui j’ai affecté la macro en bas de texte : elle sauvegarde les facture de la cellule ((E8) feuil Facture = Fac-001-JUIL) dans la cellule ((A3) feuil ARCHIVESFAC) en chiffres 1.2.3…, et la formule de la Cellule (« E8 » = n° facture) elle s’efface et remplace par « =(ARCHIVESFAC!A3)+1 »

    et que elle es sensé sauvegarder le de cette manier Fac-001-JUIL, Fac-002-JUIL.... et le dernier n° doit toujours être sauvegarder a la cellule ((A3) feuil ARCHIVESFAC) comme si le cas actuellement avec les chiffre

    puis aprés la sauvegarde la cellule (E8) feuil Facture Affiche FAC-002-JUIL) (+1)
    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
    43
     « Sub Enregistrer_Cliquer()
     
     
    myyear = Year(Range("E6"))
     
    couryear = Year(Now)
    If myyear = couryear Then GoTo suite Else MsgBox ("ATTENTION! soit tu as rentré une date qui n'appartient pas à l'année en cours, soit tu n'as pas respecté le format de date (JJ/MM/AA), soit tu as oublié d'inscrire la date !")
    Range("E6").ClearContents
    Exit Sub
    suite:
     
    Style = vbOKCancel
    Reponse = MsgBox("As-tu bien tout vérifié, parce qu'après c'est plus compliqué de modifier (il faut aller dans le listing). Si c'est bon, clique sur OK ", Style)
    If Reponse = vbCancel Then Exit Sub
     
    ActiveSheet.Unprotect
    Worksheets("ARCHIVESFAC").Select
    Worksheets("ARCHIVESFAC").Rows(3).Select
    Selection.Insert
    Range("A3").Select
     
     
        Range("A3").Select
    Range("A3").Formula = "=MAX(A4:A50000)+1"
    Selection.Copy
    Selection.PasteSpecial Paste:=xlValues
    Range("A1").Select
     
       Range("B3").Formula = "=FACTURE!E6"  
        Range("C3").Formula = "= FACTURE!E10"  
        Range("D3").Formula = "= FACTURE!E2" 
        Range("E3").Formula = "= FACTURE!E4"
     
     
     
        'selectionne la feuille des commandes
        Worksheets("Facture").Select
        Range("E6").Select
        Range("E6") = Now
     
        Exit Sub
     
    End Sub
    merci d'avance pour votre aide et j’espère que j'ai bien exposer mon problème

  2. #2
    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,

    Pas sûr d'avoir tout bien compris, mais essayez cela quand même
    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
     
    Option Compare Text
     
    Sub Enregistrer_Cliquer()
        myyear = Year(Range("E6"))
        couryear = Year(Now)
        If myyear = couryear Then
            Style = vbOKCancel
            Reponse = MsgBox("As-tu bien tout vérifié, parce qu'après c'est plus compliqué de modifier (il faut aller dans le listing). Si c'est bon, clique sur OK ", Style)
            If Reponse = vbCancel Then Exit Sub
            ActiveSheet.Unprotect
            Worksheets("ARCHIVESFAC").Select
            Rows(3).Insert
            Range("A3") = Application.WorksheetFunction.Max(Range("A4:A50000")) + 1
            Range("B3") = Sheets("FACTURE").Range("E6")
            Range("C3") = Sheets("FACTURE").Range("E10")
            Range("D3") = Sheets("FACTURE").Range("E2")
            Range("E3") = Sheets("FACTURE").Range("E4")
            'selectionne la feuille des commandes
            Worksheets("Facture").Range("E6") = Now
        Else
            MsgBox ("ATTENTION! soit tu as rentré une date qui n'appartient pas à l'année en cours, soit tu n'as pas respecté le format de date (JJ/MM/AA), soit tu as oublié d'inscrire la date !")
            Worksheets("Facture").Range("E6").ClearContents
        End If
    End Sub
    Je vois que vous déprotégé la feuille"Facture", Quand la reprotégez-vous?

    Cdlt

  3. #3
    Membre averti
    Femme Profil pro
    alger
    Inscrit en
    Novembre 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : alger
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2015
    Messages : 34
    Par défaut
    bonjour Mr ARTURO83 merci pour ton aide je vais essayer d’être claire

    le bute du code vba que j'ai poste et de me permettre d'archiver mes facture avec les n° incrimenter automatique dans la cellule ("E8" feuil facture ) dans la feuil (ARCHIVESFAC cellule ("A3")) et qui fonction bien avec le code vba que j'ai poste.

    je me excuse j'ai pas noté dans mon message précédent que j'utilise ce code dans Workbook et si de la que viens mon problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        If Sh.Name = "Facture" Then
        Range("E8").Select
        Range("E8").Formula = "=(ARCHIVESFAC!A3)+1"
        End If
    End Sub
    ce code me permit d'incrémenter les n° facture en chiffre 1.2.3....... a chaque sauvegarde.
    Et je souhait Bien incrémenté les n° de cette manière Fac-001-JUIL. Fac-002-JUIL....a chaque sauvegarde

    Ma Question es ce que ya moyen de remplacé cette ligne Qui incrémenter les n° facture en chiffre 1.2.....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("E8").Formula = "=(ARCHIVESFAC!A3)+1"
    par cette ligne qui va me permettre d'incrémenter les n° facture de cette manière Fac-001-JUIL. Fac-002-JUIL....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ="Fac-"&TEXTE(STXT(ARCHIVESBDC!A3;5;3)+1;"000")&"-"&MAJUSCULE(TEXTE(E6;"MMM"))




    merci inféniment

  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,

    Ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        If Sh.Name = "Facture" Then Range("E8").FormulaR1C1 = "=""Fac-""&TEXT(MID(ARCHIVESBDC!R[-5]C[-4],5,3)+1,""000"")&""-""&UPPER(TEXT(R[-2]C,""MMM""))"
    End Sub
    Cdlt

  5. #5
    Membre averti
    Femme Profil pro
    alger
    Inscrit en
    Novembre 2015
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : alger
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2015
    Messages : 34
    Par défaut
    merci inféniment Mr ARTURO83 le code fonction très bien

    j'ai autre chose a vous demander si ça vous dérange pas.

    j'ai un autre problème sur le même classeur quand je clic sur le bouton 1 sur ma Facture pour sauvegarder les données; le N° Fac-001-JUIL dans la cellule (E8) est enregistrer sou la forme des chiffre 1,2.... ) sur la feuil ARCHIVESBDC normalement il doit être enregistrer comme suit Fac-001-JUIL plus un a chaque sauvegarde

    et la cellule ((E8) Facture) affiche ça #VALEUR! après la première sauvegarde

    je pense que le problème viens de la ligne 2 du bout de code en bas du texte affecté au bouton 1 de sauvegarde se qui fait que je n'arrive pas a sauvegarder mes numéro incrémenté sur ma feuil Facture (E8) de cette maniéré Fac-001-JUIL puis Fac-002-JUIL....... sur la feuil ARCHIVESBDC .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Range("A3").Select
    Range("A3").Formula = "=MAX(A4:A50000)+1"
    Selection.Copy
    Selection.PasteSpecial Paste:=xlValues
    Range("A1").Select
    je vous joins mon classeur pour bien voir le problème
    merci
    Fichiers attachés Fichiers attachés

  6. #6
    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,

    le fichier
    Pièce jointe 575816

    Le code dans le module standard
    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
    Option Compare Text
     
    Sub Enregistrer_Cliquer()
        Dim MyYear As Long, CourYear As Long
        Dim Reponse As String
        Dim NewFac As Long, DerLig As Long
     
        MyYear = Year(Range("E6"))
        CourYear = Year(Now)
        If MyYear = CourYear Then
            Style = vbOKCancel
            Reponse = MsgBox("As-tu bien tout vérifié, parce qu'après c'est plus compliqué de modifier (il faut aller dans le listing). Si c'est bon, clique sur OK ", Style)
            If Reponse = vbCancel Then Exit Sub
            ActiveSheet.Unprotect
            Worksheets("ARCHIVESBDC").Select
            Rows(3).Insert
            DerLig = Range("A" & Rows.Count).End(xlUp).Row
            If DerLig = 2 Then
                DerLig = 4
                NewFac = 1
            Else
                Range("F4:F" & DerLig).FormulaR1C1 = "=IF(RC[-5]<>"""",MID(RC[-5],5,3)*1,"""")"
                NewFac = Application.WorksheetFunction.Max(Range("F4:F50000")) + 1
            End If
            Range("A3").Value = "Fac-" & Format(NewFac, "000") & "-" & UCase(Format(Month(Sheets("Facture").Range("E6")), "MMM"))
            Columns(6).ClearContents
            Range("B3") = Sheets("FACTURE").Range("E6")
            Range("C3") = Sheets("FACTURE").Range("E10")
            Range("D3") = Sheets("FACTURE").Range("E2")
            Range("E3") = Sheets("FACTURE").Range("E4")
            'selectionne la feuille des commandes
            Worksheets("Facture").Range("E6") = Now
        Else
            MsgBox ("ATTENTION! soit tu as rentré une date qui n'appartient pas à l'année en cours, soit tu n'as pas respecté le format de date (JJ/MM/AA), soit tu as oublié d'inscrire la date !")
            Worksheets("Facture").Range("E6").ClearContents
        End If
    End Sub
    Concernant la formule qui réécrit le N° de bon dans la feuille "Facture", je l'ai modifié pour qu'elle prenne le N°1 dans le cas ou il n'y aurait pas encore de Facture archivée, modification dans ThisWorkbook.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        If Sh.Name = "Facture" Then Range("E8").FormulaR1C1 = "=IF(ARCHIVESBDC!R3C1="""",""Fac-001-""&UPPER(TEXT(R[-2]C,""MMM"")),""Fac-""&TEXT(MID(ARCHIVESBDC!R[-5]C[-4],5,3)+1,""000"")&""-""&UPPER(TEXT(R[-2]C,""MMM"")))"
    End Sub

    Question:
    Etes-vous sûre que le nombre de factures n'excèdera pas 999? sinon il faut revoir la façon d'extraire le N°.

    Cdlt

Discussions similaires

  1. [XL-2013] Code VBA incrémentation cellule
    Par Chawkii dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/06/2018, 13h51
  2. [XL-2007] Code VBA pour incrémentation et fusion de doublons
    Par saylwen dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/03/2018, 09h52
  3. [AC-2016] Code VBA incrémentation + 1
    Par py86acces dans le forum VBA Access
    Réponses: 4
    Dernier message: 17/02/2018, 13h56
  4. Incrémenter un nom de fichier dans le code VBA
    Par Leodams dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/05/2013, 13h16
  5. [VBA-E] code pour incrémentation
    Par tarmin dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 23/02/2007, 15h58

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