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 Automatique d'ID [XL-2010]


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
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 23
    Par défaut Incrémentation Automatique d'ID
    Bonjour,

    J'ai un soucis pour incrémenter l'ID de mes objets correctement. La structure de l'ID est la suivante: "INF00000000000x" , mais il faut que la longueur totale de chaque ID soit identique (15 caractères dans mon cas). Or, avec ce que j'ai écrit ci-dessous, bâ ca mârche pô!

    Code très allégé, histoire d'aller à l'essentiel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim IDInfra as string
    Dim NumIDInfra as long
     
    IDInfra = "INF000000000001"
     
    NumIDInfra = Val(Mid(IDInfra, 11))
     
    Worksheets("INFRA").Cells(1, 1) = Left(IDInfra, Len(IDInfra) - (Len(NumIDInfra))) & NumIDInfra
     
    NumIDInfra = NumIDInfra + 1
    Et je me retrouve avec des ID qui n'ont pas la même longueur, car NumIDInfra est bien converti en nombre (ici "1") mais il conserve une longueur de 4 caractères (correspondant à "0001"), donc soustrait trop de caractères dans ma formule. Je dois récupérer les 4 derniers chiffres de la variable IDInfra car je serai aussi amené à incrémenter après un ID déjà existant, pouvant parfois être déjà supérieur à 1000.

    Résultat obtenu :

    INF000000002
    [...]
    INF0000000010
    [...]
    INF00000000100
    [...]
    INF000000001000

    Résultat souhaité:

    INF000000000002
    [...]
    INF000000000010
    [...]
    INF000000000100
    [...]
    INF000000001000

    Quelqu’un aurait il une solution pour parer ce problème?

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Essaie comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Dim ID
        Dim Valeur
     
        ID = Range("A1")  'à changer au besoin
     
        Valeur = Val(Right(ID, Len(ID) - 3)) + 1
        MsgBox "INF" & Format(Valeur, "000000000000")

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 23
    Par défaut
    Bonjour Parmi,

    effectivement ca fonctionne!
    Je l'ai un peu modifié, dans mon code ca donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim IDInfra as string
    Dim NumIDInfra as long
     
    IDInfra = "INF000000000001"
     
    NumIDInfra = Val(Right(IDInfra, Len(IDInfra) - 3))
     
    Worksheets("INFRA").Cells(1, 1) = "INF" & Format(NumIDInfra, "000000000000")
     
    NumIDInfra = NumIDInfra + 1
    Merci Parmi c'est parfait!

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Tu pouvais modifier le format de ta cellule comme suit: "INF000000000000" anisi 1 donnerait INF000000000001, 2 INF000000000002 et ainsi de suite!

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

Discussions similaires

  1. Incrémentation automatique
    Par otravaglini dans le forum Access
    Réponses: 6
    Dernier message: 28/06/2006, 10h20
  2. Incrémentation automatique entre 2 chiffres
    Par fordiste dans le forum Access
    Réponses: 2
    Dernier message: 24/06/2006, 06h33
  3. Problème d'incrémentation automatique
    Par ist2008 dans le forum Access
    Réponses: 3
    Dernier message: 19/04/2006, 20h21
  4. Problème d'incrémentation automatique
    Par ist2008 dans le forum Access
    Réponses: 1
    Dernier message: 19/04/2006, 14h30
  5. incrémenter automatiquement un champ d'un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 8
    Dernier message: 01/09/2005, 08h42

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