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 dans une chaîne alphanumérique code vba [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    amateur
    Inscrit en
    Décembre 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2019
    Messages : 53
    Par défaut Incrémentation numéro dans une chaîne alphanumérique code vba
    Bonjour les experts du code vba,

    Je voudrais le code vba pour incrémentation du numéro d'ordre ( 003 dans mon exemple )

    - valeur de départ: F2020-003 contenue dans la dernière cellule de la colonne B intitulée 'N° doc' d'un tableau dans feuille2
    - résultat à obtenir : 2020-004 dans la cellule A1 de la feuille1

    infos utiles et/ou complémentaires:

    - incrémenter la valeur numérique (003) : format en 3 chiffres "000"

    F correspond au 1er caractère extrait d'une cellule ( code Left…) non concerné pour obtenir le résultat final.
    2020 correspond à l'année en cours
    - le nom de la colonne B du tableau fait référence à: fact_out[[#Tout];[N° doc]] ( N° doc = intitulé du titre dans l'entête du tableau)
    - le tiret sera obtenu par concaténation & dans le résultat

    mon code débute comme suit (entre les sub):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Dim a As Integer         ' (a pour les 4 chiffres de l'année)
        Dim vinc As String         ' vinc pour valeur incrémentée
     
         a = Year(Now())      '  (renvoi l'année en cours en 4 chiffres)
         vinc = … (Range("B ?… ").End(xlDown)), 3) +1 … pour l'incrémentation ? --> syntaxe non correct.
          ...
    Merci de corriger / adapter / créer le code ad hoc

    Fredym

  2. #2
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Bonjour,

    Pourquoi ne pas de nouveau faire un "Left" mais avec un début après le "-" ?

    F2020-003 : En débutant en position 7 avec une portée de 3 caractères ?

    En extrayant ça, tu pourras aisément incrémenter non ?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Fortune teller
    Inscrit en
    Octobre 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Fortune teller

    Informations forums :
    Inscription : Octobre 2007
    Messages : 110
    Par défaut Incrémentation numéro
    Voilà l'incrémentation demandée dans une boucle de 1 à 100

    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
     
    Sub num_facture()
     
        Dim annee As String
        Dim i As Long
     
        annee = Year(Now)
     
        For i = 1 To 100
     
            If i <= 9 Then
     
                Cells(i, 1) = "F " & annee & "-00" & i
     
            ElseIf i <= 99 Then
     
                Cells(i, 1) = "F " & annee & "-0" & i
     
            Else
     
                Cells(i, 1) = "F " & annee & "-" & i
     
            End If
     
        Next i
     
    End Sub

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 170
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour ma part, j'ai une autre philosophie.
    Dans un numéro de facture, note d'envoi, offre, etc. il y a deux éléments. Le numéro et son format
    Ce sont deux éléments à traiter indépendamment l'un de l'autre.
    Dans une cellule ont peut utiliser soit le format personnalisé, soit utiliser la fonction TEXT pour excel, Format pour VBA

    Pour ma part, dans mes programmes j'ai une fonction qui se charge de renvoyer un numéro soit continu soit dépendant des critères définit par le client (remise à zéro tous les mois, trimestres, années, etc.) et ensuite on s'occupe du format (partie visuelle mais non concernée par la numérotation-. C'est l'habillage.

    On place les paramètres de la numérotation soit dans un fichier ini soit dans une feuille paramètre du classeur et dans une autre cellule du classeur la fonction TEXT "habille" la manière dont le client souhaite voir apparaître le numéro dans son document.
    Bien plus simple à mettre en place, maintenir l'application sans "hard coder" dans le VBA et je fais pareil pour charger les modèles et indiquer à mon application où et sous quel nom le document doit être sauvé
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre confirmé
    Homme Profil pro
    amateur
    Inscrit en
    Décembre 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2019
    Messages : 53
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Pour ma part, j'ai une autre philosophie.
    Dans un numéro de facture, note d'envoi, offre, etc. il y a deux éléments. Le numéro et son format
    Ce sont deux éléments à traiter indépendamment l'un de l'autre.
    Dans une cellule ont peut utiliser soit le format personnalisé, soit utiliser la fonction TEXT pour excel, Format pour VBA

    Pour ma part, dans mes programmes j'ai une fonction qui se charge de renvoyer un numéro soit continu soit dépendant des critères définit par le client (remise à zéro tous les mois, trimestres, années, etc.) et ensuite on s'occupe du format (partie visuelle mais non concernée par la numérotation-. C'est l'habillage.

    On place les paramètres de la numérotation soit dans un fichier ini soit dans une feuille paramètre du classeur et dans une autre cellule du classeur la fonction TEXT "habille" la manière dont le client souhaite voir apparaître le numéro dans son document.
    Bien plus simple à mettre en place, maintenir l'application sans "hard coder" dans le VBA et je fais pareil pour charger les modèles et indiquer à mon application où et sous quel nom le document doit être sauvé

    Mr Tulliez,
    Je ne suis pas sûr d'avoir tout compris le message que vous voulez me faire passer, par contre je serai ravi de connaitre votre solution plus simple à mettre en place;
    de mon côté la cellule qui reçoit le numéro de facture (exemple 2020-001) est soumis à une validation (fonction txt) et dans le listing des documents (factures et note de crédit) ce numéro est précédé du 1er caractère du type de document (exemple F pour facture et N pour note de crédit). Je désire également garder le contrôle du n° de document.
    J'attend le plaisir de vous lire.
    Fredym

  6. #6
    Membre confirmé
    Homme Profil pro
    amateur
    Inscrit en
    Décembre 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2019
    Messages : 53
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Pour ma part, j'ai une autre philosophie.
    Dans un numéro de facture, note d'envoi, offre, etc. il y a deux éléments. Le numéro et son format
    Ce sont deux éléments à traiter indépendamment l'un de l'autre.
    Dans une cellule ont peut utiliser soit le format personnalisé, soit utiliser la fonction TEXT pour excel, Format pour VBA

    Pour ma part, dans mes programmes j'ai une fonction qui se charge de renvoyer un numéro soit continu soit dépendant des critères définit par le client (remise à zéro tous les mois, trimestres, années, etc.) et ensuite on s'occupe du format (partie visuelle mais non concernée par la numérotation-. C'est l'habillage.

    On place les paramètres de la numérotation soit dans un fichier ini soit dans une feuille paramètre du classeur et dans une autre cellule du classeur la fonction TEXT "habille" la manière dont le client souhaite voir apparaître le numéro dans son document.
    Bien plus simple à mettre en place, maintenir l'application sans "hard coder" dans le VBA et je fais pareil pour charger les modèles et indiquer à mon application où et sous quel nom le document doit être sauvé
    Mr Tulliez,
    J'ai bien relu avec attention ,j'ai compris qu'il fallait dissocier les éléments pour les utiliser et ensuite les concaténer pour obtenir le résultat voulu.
    Merci pour le conseil
    Fredym

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 170
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'ai bien relu avec attention ,j'ai compris qu'il fallait dissocier les éléments pour les utiliser et ensuite les concaténer pour obtenir le résultat voulu.
    Merci pour le conseil
    Parfait.
    Je n'ai malheureusement pas pu donner le lien sur l'article que j'avais écrit à ce sujet (avec classeur en téléchargement) car suite à un problème technique chez notre hébergeur, nous avons subi une panne d'une semaine mais c'est maintenant réparé.
    Voici le lien sur un billet titré Excel – Incrémenter un numéro de facture, devis, à l’aide d’une fonction personnalisée
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  8. #8
    Membre confirmé
    Homme Profil pro
    amateur
    Inscrit en
    Décembre 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2019
    Messages : 53
    Par défaut
    Citation Envoyé par zoltar_x Voir le message
    Voilà l'incrémentation demandée dans une boucle de 1 à 100

    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
     
    Sub num_facture()
     
        Dim annee As String
        Dim i As Long
     
        annee = Year(Now)
     
        For i = 1 To 100
     
            If i <= 9 Then
     
                Cells(i, 1) = "F " & annee & "-00" & i
     
            ElseIf i <= 99 Then
     
                Cells(i, 1) = "F " & annee & "-0" & i
     
            Else
     
                Cells(i, 1) = "F " & annee & "-" & i
     
            End If
     
        Next i
     
    End Sub


    Merci pour cette belle boucle d'incrémentation.

    je dois la retravailler pour arriver au résultat final;
    ce n'est pas le code que j'attendais pour répondre à ma requête.
    Fredym

  9. #9
    Membre éprouvé
    Homme Profil pro
    Fortune teller
    Inscrit en
    Octobre 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Fortune teller

    Informations forums :
    Inscription : Octobre 2007
    Messages : 110
    Par défaut Incrémentation numéro
    Citation Envoyé par fredym Voir le message
    Merci pour cette belle boucle d'incrémentation.

    je dois la retravailler pour arriver au résultat final;
    ce n'est pas le code que j'attendais pour répondre à ma requête.
    Fredym
    En voilà une idée qu'elles est bonne : c'est l'occasion de faire travailler tes petites neurones.
    Je pense que tu te trompes de forum : les contributeurs dans ce forum ne sont pas des sous-traitants.
    Ils fournissent un coup de main lorsqu'un code bugue.

    En général, un premier travail est fourni et les gens essayent de trouver là où ça ne va pas.
    On voudrait bien voir un début de quelque chose...

  10. #10
    Membre confirmé
    Homme Profil pro
    amateur
    Inscrit en
    Décembre 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2019
    Messages : 53
    Par défaut
    bj Zoltar-x

    merci pour ta remarque...
    je vous ai peut-être heurté avec mon message assez bref mais ce n'est pas mon intention...
    bien sûr que j'avais entamé le code ...
    J'ai trouvé la solution...
    merci

  11. #11
    Membre confirmé
    Homme Profil pro
    amateur
    Inscrit en
    Décembre 2019
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2019
    Messages : 53
    Par défaut
    Citation Envoyé par révèr Voir le message
    Bonjour,

    Pourquoi ne pas de nouveau faire un "Left" mais avec un début après le "-" ?

    F2020-003 : En débutant en position 7 avec une portée de 3 caractères ?

    En extrayant ça, tu pourras aisément incrémenter non ?


    Merci pour cette solution,
    c'est probablement celle que je vais retenir sauf si ... ?
    Fredym

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

Discussions similaires

  1. Réponses: 21
    Dernier message: 19/09/2011, 13h57
  2. Recherche dans une chaîne des codes contenus dans une table
    Par funkyjul dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/07/2011, 08h28
  3. Afficher dans une cellule le code VBA d'un bouton
    Par greenzephyr dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/11/2010, 10h01
  4. Bug dans une ligne de code VBA
    Par orlacit dans le forum VBA Access
    Réponses: 5
    Dernier message: 08/11/2007, 15h25
  5. [Requête] Incrémentation numéro dans une requête
    Par lito74 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 19/04/2007, 19h06

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