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 :

Incrémentation numéro automatique [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut Incrémentation numéro automatique
    Bonjour à toutes et à tous,

    Dans une cellule "F3" d'un fichier Excel je souhaite incrémenter un numéro automatiquement. Il doit avoir cette forme CLAS"ANNEE EN COURS"0001, 0002, 0003, etc...
    J'ai commencé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Worksheet_Activate()
    N = Range("F3")
    N = N + 1
    Range("F3") = "CLAS" & Year & "/" & N
    End Sub
    Mais je ne sais pas comment insérer l'année en cours et le numéro avec le format 0001
    Pouvez-vous m'apporter votre aide s'il vous plait ?
    Je vous en remercie par avance
    Amicalement

    EDIT :
    J'ai réussi à trouver pour le format nombre, voici le code modifié. YEAR est en parenthèses car j'ai une erreur à ce niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub Worksheet_Activate()
    N = Range("F3")
    N = N + 1
    N = Format(N, "0000")
    Range("F3") = "CLAS" & "Year" & " " & "/" & " " & N
    End Sub

  2. #2
    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 NEC14 Voir le message
    Mais je ne sais pas comment insérer l'année en cours et le numéro avec le format 0001
    Deux questions, une réponse : la fonction Format().
    https://msdn.microsoft.com/fr-fr/VBA...r-applications

    Pour l'année, l'associer à la fonction Now().

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour Menhir et merci

    Voici ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Worksheet_Activate()
    Dim An2 As Byte
    An2 = DatePart("ww", Date, 2, 2)
    N = Range("F3")
    N = N + 1
    N = Format(N, "0000")
    An = Year(Now())
    Range("F3") = "CLAS" & " " & An2 & An & " " & "/" & " " & N
    End Sub
    Sauf que j'ai un erreur ici : "N = N + 1" - Incompatibilité de type

    EDIT : Le message apparaît lorsque je quitte la feuille et que je reviens dessus

  4. #4
    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 NEC14 Voir le message
    EDIT : Le message apparaît lorsque je quitte la feuille et que je reviens dessus
    C'est normal puisque ta macro est un évènement Activate.

    Sauf que j'ai un erreur ici : "N = N + 1" - Incompatibilité de type
    Essaye de mettre dans une cellule la formule =F3+1.
    Comme ça va renvoyer une erreur, essaye de comprendre pourquoi ça renvoie une erreur.
    Ca te permettra de comprendre pourquoi tes calculs sur N ne fonctionnent pas.

    Et déclare tes variables (en particulier N) avec leur type.
    Ca aussi ça te permettra de comprendre ton code.

    Et pour ce qui est de l'année, relis mon message précédent.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Désolé, mais je ne m'en sors pas. Je vais essayer de trouver autre chose avec des formules Excel.
    C'est compliqué, je ne comprends pas.
    Je suis vraiment navré.

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    solution niveau grand débutant :  entrer une valeur numérique dans la cellule (0 ou 1 ou 2 ou … 1000 ou …)

    et juste personnaliser le format de la cellule du genre   "CLAS2018"0000   réduisant ainsi l'épreuve du code

    à la plus simple expression d'une incrémentation numérique unitaire !       Bref, Penser Excel Avant VBA …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  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
    Citation Envoyé par NEC14 Voir le message
    Désolé, mais je ne m'en sors pas.
    C'est compliqué, je ne comprends pas.
    Tu n'arrives pas à comprendre que CLAS 2018 0001 + 1 ne puisse pas donner 0002 ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    *
    Private Sub Worksheet_Activate()
    Dim An2 As Byte,N as integer 
    An2 = DatePart("ww", Date, 2, 2)
    N = Range("F3")
    N = N + 1
    'N = Format(N, "0000")
    An = Year(Now())
    Range("F3") = "CLAS" & " " & An2 & An & " " & "/" & " " & Format(N, "0000")
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    right("CLAS2018/8/0002",4)=format(Cint(right("CLAS2018/8/0002",4))+1,"0000")

  9. #9
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour à toutes et à tous,

    Merci dysorthographie pour ta réponse. Mais j'ai procédé autrement pour un résultat qui me satisfait.

    Voici le code que j'ai mis en place, pour le moment il est lié à l'activation de la feuille, mais je vais changer ça en le liant avec le changement du contenu de la cellule F15.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Worksheet_Activate()
    Dim An2 As Byte, N As Integer
    An2 = DatePart("ww", Date, 2, 2)
    An = Year(Now())
    Range("F3") = "CLAS" & " " & "CESU" & " " & An & " " & An2
    N = Range("H3")
    N = N + 1
    Range("H3") = N
    End Sub
    EDIT : Je rencontre cependant un problème, ces cellules (F3 et H3) doivent être protégées, je dois donc retirer la protection le temps du changement de numérotation et reprotéger aussitôt

  10. #10
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Re,

    Voilà j'ai fini mon code. J'espère que cela va fonctionner, je l'ai testé plusieurs fois sans rencontrer de problème particulier.
    Un grand merci à tout ceux qui ont bien voulu participer à ce post.
    Amicalement
    René

    A l'activation de la feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub Worksheet_Activate()
    ActiveSheet.Unprotect "CLAS"
    Dim An2 As Byte, N As Integer
    An2 = DatePart("ww", Date, 2, 2)
    An = Year(Now())
        Range("F3") = "CLAS" & "-" & "CESU" & "-" & An & "-" & An2
        ActiveSheet.Protect "CLAS"
    End Sub
    A la modification de la cellule F15
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    ActiveSheet.Unprotect "CLAS"
    If Not Application.Intersect(Target, Range("F15")) Is Nothing Then
        N = Range("H3")
        N = N + 1
        Range("H3") = N
    End If
    ActiveSheet.Protect "CLAS"
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Incrémentation numéro automatique dans text box d'un formulaire
    Par tistyle dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 24/01/2018, 10h55
  2. Incrémentation numéro automatique
    Par thomas.dusart dans le forum Sybase
    Réponses: 4
    Dernier message: 05/07/2010, 09h34
  3. Incrémentation numéro automatique
    Par thomas.dusart dans le forum Access
    Réponses: 8
    Dernier message: 02/07/2010, 11h18
  4. Incrémentation d'un numéro automatique
    Par gawgab dans le forum VBA Access
    Réponses: 10
    Dernier message: 27/10/2008, 09h15
  5. Incrémentation "numéro automatique" defaillante
    Par maryola dans le forum Access
    Réponses: 1
    Dernier message: 05/10/2006, 13h19

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