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 :

Numérotation client vba


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2018
    Messages : 4
    Par défaut Numérotation client vba
    Nom : vbaprojet.PNG
Affichages : 615
Taille : 103,2 Ko

    Bonjour, j'aimerais faire en sorte qu'a chaque fois que j'encode un client, le numéro du client augmente de 1.

    Si possible j'aimerais aussi qu'il y ait des numéros bis (1.1 ; 1.2 ;...) dans le cas où je mets plusieurs personnes sous une même assurance (par exemple une famille)

    Tout ça automatiquement et en vba s'il vous plait

    Nom : projetVBA.PNG
Affichages : 617
Taille : 361,5 Ko

    P.S.: je ne suis pas très bon en vba.

  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,

    Pour l'incrémentation automatique, tu peux utiliser Max()+1. Ici, en colonne 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub Test()
     
        Dim Num As Long
     
        Num = Application.Max(Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))) + 1
     
        MsgBox Num
     
    End Sub
    Si possible j'aimerais aussi qu'il y ait des numéros bis (1.1 ; 1.2 ;...) dans le cas où je mets plusieurs personnes sous une même assurance (par exemple une famille)
    Pour ça, il va falloir un peu plus d'explications ! Surtout, comment sont rangées tes données quand les personnes sont sous le même numéro de contrat

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    et surtout pour les ajout eventuel d'un membre de la famille dans le contrat il faut non seulement determiner le dernier numero mais aussi dans ce cas la le dernier numero de la famille ainsi que sa ligne pour y inserer le nouveau

    conception a revoir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2018
    Messages : 4
    Par défaut
    Citation Envoyé par Theze Voir le message
    Bonjour,

    Pour l'incrémentation automatique, tu peux utiliser Max()+1. Ici, en colonne 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub Test()
     
        Dim Num As Long
     
        Num = Application.Max(Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))) + 1
     
        MsgBox Num
     
    End Sub
    Bonjour, comme je l'ai dit, je suis débutant donc peux-tu me dire où je dois le mettre pour que ça fonctionne?

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2018
    Messages : 4
    Par défaut
    Citation Envoyé par Theze Voir le message
    Pour ça, il va falloir un peu plus d'explications ! Surtout, comment sont rangées tes données quand les personnes sont sous le même numéro de contrat
    Imaginons qu'un père souscris une assurance pour lui et toute sa famille. Pour le père (vu que c'est lui qui souscris et qui paie) son numéro sera un nombre entier (1, 2, 3) et pour les membres de sa famille, ça reprendrait le même nombre mais en rajoutant des décimales dérrierres (1.1, 1.2, 1.3,...)

  6. #6
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonsoir,
    Attention, sauf erreur ou omission de ma part, 1;2;3 etc sont des chiffres. Alors que 1.1; 1.2 etc c'est du texte, a traiter avec prudence!
    Quand a utiliser 1; 2 ; 3 ; 3,1 ; 3,2 la fonction max donnerait Max()+1 =4,2. Il faudra donc adjoindre à la fonction "Max" la fonction "Tronque"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Trunc(Max("A2:A350"))+1
    Quand à savoir ou mettre ce code, on connais pas le tien de code, c'est impossible à dire

    Cordialement

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2018
    Messages : 4
    Par défaut
    Citation Envoyé par Transitoire Voir le message

    Quand à savoir ou mettre ce code, on connais pas le tien de code, c'est impossible à dire

    Cordialement
    Voici mon projet
    Fichiers attachés Fichiers attachés

  8. #8
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Bonjour, vous avez déja sur votre projet un compteur de ligne, je l'ai fait fonctionner en mettant la colonne A en nombre sans virgule. en effet, vous verrez sur le code en dessous, que le If(IsNumeric...) renvoi au else s'il ne s'agit pas d'un nombre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub UserForm_Initialize()
        Dim tempnum As String
            tempnum = Range("a65000").End(xlUp).Rows
        If (IsNumeric(tempnum)) Then
            lblNum.Caption = tempnum + 1
        Else
            lblNum.Caption = 1
        End If
        code.....
    Par ailleurs, en ce qui concerne Les comptages en 3,1 ou 3.1, cela demande à mon sens une modification importantes de structures. Cela oblique à une fiche par personne soit 6 fiches, si 1 abonné et 5 supplémentaires. Le seul avantage réside dans deux choses, une recherche plus simple par nom, et la non limitation à 6 supplémentaires. La balle est dans votre camp.
    Cordialement

  9. #9
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Je n'ai pas ouvert le classeur joint (je n'ouvre jamais un classeur tiers).
    Si je m'en tiens au seul exposé, je suis assez enclin à inviter à reconsidérer la conception sur ces bases liminaires de réflexion :
    - un numéro d'assuré n'est pas un nombre, mais une chaîne de caractères
    - un numéro d'assuré doit toujours être le même, qu'il s'agisse de l'assuré principal ou d'assurés secondaires
    - pour un numéro d'assuré :
    ---- un champ distinct pour en préciser le "rang" (par exemple 0 pour l'assuré principal, 1 pour le 1er assuré secondaire, 2 pour le suivant, etc ...
    Les choses devraient ainsi être bien plus faciles à gérer à divers titres (ajouts - cessation totale - cessation des droits d'un sous-assuré, etc ...)

    En d'autres termes : considérer qu'existe un dossier (un client) concernant plusieurs personnes, chacune d'entre elles dotées d'un attribut (champ distinct)

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    Ok avec unparia
    1 colonne pour les num de contrat,1colonne pour les item de la famille
    pour les ajout prendre la derniere ligne et inserer la nouvelle ligne en colonne 2 sera valeur cellule du du dessus +1 si meme famille 0 si nouveau client point final
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Re bonjour.
    Juste pour rectifier une erreur dans le code précédemment montré.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub UserForm_Initialize()
        Dim tempnum As String
        Sheets("Clients").Activate
            tempnum = Range("a65000").End(xlUp).Rows
        If (IsNumeric(tempnum)) Then
            lblNum.Caption = tempnum + 1
        Else
            lblNum.Caption = 1
        End If
        code.....
    Je partage le point de vue de "Unparia" a qui je souhaiterais toutefois poser une question:
    Pourquoi un numéro d'assuré ne devrait-il pas être un nombre mais une chaine de caractère?
    Est ce pour une recherche de type alphanumérique genre plan comptable (41jac00)? ou bien est-ce une autre raison.
    Cordialement

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    transitoire
    ok ce code de contrat "41jac00" cherche le 2 eme enfant avec ca

    il faut absolument si il ne veux pas pedaler pour determiner ces lignes distinguer le num de contrat et le num d'item de la famille donc 2 colonne
    et les manips lui seront plus simples
    j'ai regardé son classeur
    c'est bien ce que je disais toute la conception a revoir et en plus le orange sur du blanc comme ca serieux !!! a la fin de la journéee visite chez l'ophtalmo

    sur certain userform on a du mal a distinguer les textboxs imagine une secretaire travaillant 7 heures avec cet outils, la pauvre

    le userform recherche il n'y a pas de combo ou listbox juste un textbox il n'a pas interet a faite une faute d'orthographe sur le nom sinon il risque de chercher longtemps

    le userform ajout il a un multipage mebre 1,2,etc....

    quand un client est selectionné les membres dans le multipage ne se mettent pas a jour comment pourrait il savoir que pierre machin a deja 3 membres avec lui
    il taperait le nouveau membres dans quelle page ??????????
    etc...
    etc.....
    revoir la copie entierement aussi bien en raisonnement conceptuel qu'en visuel
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Re ,Bonjour Patrick, je suis entièrement d'accord avec toi. voir ci-dessous, un rappel ce que j'avais dit plus haut.

    Par ailleurs, en ce qui concerne Les comptages en 3,1 ou 3.1, cela demande à mon sens une modification importantes de structures. Cela oblique à une fiche par personne soit 6 fiches, si 1 abonné et 5 supplémentaires. Le seul avantage réside dans deux choses, une recherche plus simple par nom, et la non limitation à 6 supplémentaires. La balle est dans votre camp.
    par ailleurs, le "41jac00" fait partie d'un exemple que j'utilise dans ma question à "Unparia". Il s'agit d'un numéro de compte alphanumérique d'un plan comptable. 41(classe clients)jac(3 premières lettres du nom)00(permettant de différentier 99 jac(*). Par ailleurs, ainsi que je le dit plus haut, le fait d'avoir une fiche pour le premier compte et une fiche pour les comptes associés permettra de ne plus avoir une limitation a 6 associés comme c'est le cas actuellement.
    Cordialement

  14. #14
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Transitoire
    Pour te répondre -->>parce-que les numériques servent à faire des opérations (ce qui n'est pas le cas de numéros).
    Parce-que l'on se montre prudent et que, dans cette optique, on pense au jour où l'on pourrait décider d'utiliser une vraie SGBD et que ce serait bien de pouvoir en alimenter les tables à partir des données Excel
    Parce-qu'une requête sur des chaînes de caractères n'a pas la même syntaxe que pour des numériques
    Il est ainsi toujours possible d'avoir des numéros ayant toujours le même nombre de caractères (du genre "000001" pour le 1er client). Cela peut s'avérer fort utile dans des cas divers (rapports, impressions "alignées", etc ...).
    Et rien n'est plus facile (pour une "incrémentation automatique) que d'écrire (exemple où précédent = "000324") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    suivant = Format(Val(precedent) + 1, "000000")
    Amitiés

  15. #15
    Membre Expert Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 733
    Par défaut
    Super! merci de la réponse.
    J'avais pas regardé cela sous cet angle.
    Cordialement

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    je le redis avoir un seule chaine d'indexation par contrat pour tout une famille est un calvere apres pour la recherche et les eventuel ajouts en terme de selection de ligne ,insertion etc.....
    on y arrive mais quel moulin !!

    alors que par exemple en colonne A nous mettrions les numero de contrat au hazard "3521456" ou meme "455adf524gh" et en colonne "B" 1,2,3,4,5,6,etc.....
    ainsi lors de la modif,ajout par le userform un simple filtre te donne la plage du contrat pour ajouter donc c'est derniere cell du filtre colonne B +1 pour ajouter le fiston ou dernier cell plage complete pour ajouter new contrat
    3 lignes + le filtre
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. client VBA pour OFS
    Par ariana1993 dans le forum Automation
    Réponses: 0
    Dernier message: 22/05/2017, 17h48
  2. Numérotation client par recherche de numéro libre
    Par forsay1 dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 06/07/2012, 11h26
  3. [OL-2003] Numérotation automatique VBA
    Par ptitemeuh dans le forum Outlook
    Réponses: 0
    Dernier message: 05/02/2010, 11h35
  4. numérotation en vba avec condition
    Par nrdz83 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/01/2010, 20h06
  5. [vba] Envoi de fichier ascii client Windows => server Lin
    Par kremvax dans le forum Général VBA
    Réponses: 3
    Dernier message: 28/11/2005, 12h00

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