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 :

Mise à jour automatique d'un numéro d'enregistrement via VBA sur Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 2
    Par défaut Mise à jour automatique d'un numéro d'enregistrement via VBA sur Excel
    Bonjour,

    Pour la mise en place d'un formulaire d'enregistrement via VBA sur Excel (2007), je souhaite que le numéro chaque enregistrement s'actualise automatiquement à chaque nouvelle saisie. Le numéro se compose de la manière suivante : "PA-2015-1" ; "PA-2015-2" etc...

    Pour cela, j'ai mis une en place une fonction (voir ci-dessous), où le numéro s'inscrit automatiquement dans une textbox à l'ouverture de mon userform. Mais cela ne fonctionne qu'en partie : pour chaque enregistrement, j'obtiens comme numéro "PA-2015-1". Le dernier chiffre reste "1" et je n'arrive pas à le faire passer à "PA-2015-2" "PA-2015-3"...

    Voici la fonction que j'ai mise en place :

    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
    Function nouveau_num_pa()
    i = 1
    dernier_numero = 0
    annee = Year(Date)
     
    Do While Worksheets("Feuil1").Cells(i, 1) <> ""
    If Val(Mid(Worksheets("Feuil1").Cells(i, 1), 4, 4)) = annee Then
        If Val(Right(Worksheets("Feuil1").Cells(i, 1), Len(Worksheets("Feuil1").Cells(i, 1)) - 8)) > dernier_numero Then
     
        dernier_numero = Right(Worksheets("Feuil1").Cells(i, 1), Len(Worksheets("Feuil1").Cells(i, 1)) - 8)
     
        End If
     
    End If
    i = i + 1
    Loop
    nouveau_num_pa = "PA-" & Year(Date) & "-" & dernier_numero + 1
     
    End Function
    ________________________________________________________________
     
    Private Sub UserForm_Initialize()
     
        TextBox1 = nouveau_num_pa
     
    End Sub
     
    ________________________________________________________________
     
    Private Sub TextBox1_Change()
     
    [A2] = TextBox1
     
    End Sub


    Quelqu'un pourrait-il m'apporter son aide ?

    Merci d'avance et bonne journée,

    Mathieu

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Teste ceci :
    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
     
    Function Nouveau_Num_PA() As String
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Annee As Integer
        Dim Dernier_Numero As Long
     
        With Worksheets("Feuil1"): Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
     
        For Each Cel In Plage
     
            If CInt(Split(Cel.Value, "-")(1)) = Year(Date) Then
     
                If CLng(Split(Cel.Value, "-")(2)) > Dernier_Numero Then Dernier_Numero = Split(Cel.Value, "-")(2)
     
            End If
     
        Next Cel
     
        Nouveau_Num_PA = "PA-" & Year(Date) & "-" & Dernier_Numero + 1
     
    End Function

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 2
    Par défaut
    Bonjour,

    Merci pour la réponse. J'ai adapté le code (voir ci-dessous), mais j'ai un message d'erreur "erreur d'exécution de type '9' : l'indice n'appartient pas à la sélection". En débogage "pas à pas", je remarque le problème est à la ligne "15". Je ne vois pas ce qui cloche.
    Merci

    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
    Function Nouveau_Num_PA() As String
     
        Dim Plage As Range
        Dim Cel As Range
        Dim Annee As Integer
        Dim Dernier_Numero As Long
     
        With Worksheets("Feuil1"): Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
     
        For Each Cel In Plage
     
            If CInt(Split(Cel.Value, "-")(1)) = Year(Date) Then
     
                If CLng(Split(Cel.Value, "-")(2)) > Dernier_Numero Then
                Dernier_Numero = Split(Cel.Value, "-")(2)
     
                End If
            End If
     
        Next Cel
     
        Nouveau_Num_PA = "PA-" & Year(Date) & "-" & Dernier_Numero + 1
     
    End Function

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    lors de l'erreur , utilise le bouton debug et regarde la valeur de ta variable Cel.value ... celle-ci ne contient surement pas les deux tirets "-" attendus..

Discussions similaires

  1. Mise à jour automatique de la barre d'outil après action sur un bouton
    Par anis gaied dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/10/2011, 15h53
  2. [XL-2003] mise à jour automatique d'un classeur par un code vba
    Par frihat mohamed dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/09/2011, 19h10
  3. Réponses: 1
    Dernier message: 26/03/2009, 16h48
  4. Mise à jour de la source d'un TCD via VBA
    Par alex830001 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/01/2009, 10h41
  5. mise à jour automatique des enregistrements
    Par laurent00 dans le forum IHM
    Réponses: 4
    Dernier message: 22/07/2008, 17h39

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