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

VBA Access Discussion :

Incrémenter des lettres


Sujet :

VBA Access

  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 53
    Par défaut Incrémenter des lettres
    Bonjour,
    Je souhaite à la suite d'un mot incrémenter une lettre, cela ne m'avait pas l'air si difficile que ça et pourtant... je n'y arrive pas.
    J'arrive à mettre la lettre A mais pas moyen de trouver comment incrémenter la lettre B si j'ai déjà le mot avec les lettre A et ainsi de suite(C si il y a déjà la présence de mon mot avec la lettre A et mon mot avec la lettre B...) Sachant qu'à un nouveau mot, nouveau départ d'incrémentation.
    J'ai testé ce code mais il me met toujours la lettre A quel que soit les enregistrements présents dans ma table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim c As Byte
    c = 65
    [lechampsàremplir] = [monmot] & Chr(c)
    If [lechampsàremplir] = [monmot] & Chr(c) Then
    c = c + 1
    End If
    Je débute dans le code VBA et si quelqu'un pouvait m'éclairer sur la méthode à suivre, j'ai eu beau chercher, je n'ai rien trouvé que j'ai réussi à adapter à ce que je voulais ou alors j'ai dû mal chercher...

    Merci pour l'aide que vous pourrez m'apporter.

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 129
    Par défaut
    Bonjour,

    Je n'ai pas compris ce que tu veux faire
    Dans le code indiqué, la condition est toujours vraie donc c toujours incrémenté mais comme il n'est pas utilisé ensuite cela ne sert à rien

  3. #3
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 619
    Billets dans le blog
    67
    Par défaut
    Salut,

    C'est vrai que ça manque de précision, c'est quoi le but de la manœuvre ?

    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  4. #4
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 53
    Par défaut
    Je réexplique, c'est vrai que je n'ai peut-être pas été très claire.
    Je crée une base de donnée pour répertorier des espèces.
    J'ai réussi à créer un numéro personnalisé pour chaque espèce sous la forme XXXXXX0000.
    Les XXXXXX sont les premières lettres des familles d'espèce et ensuite un numéro pour les différentes espèces de la famille. A chaque nouvelle famille, le numéro repart à 0001.
    Les espèces seront rangées dans un meuble à tiroirs, et il serait possible d'avoir dans plusieurs flacons différents la même espèce ( même espèce récoltée sur un lieu différent du premier... = différents échantillons)
    Sur chaque flacon, un numéro différent sera inscrit pour pouvoir trouver facilement l'échantillon souhaité et ce numéro de flacon sera écrit de la manière suivante : XXXXXX0000Y
    Le dernier Y étant l'incrémentation automatique de lettre que je souhaite faire et qui permettra de différencier les échantillons.
    Du coup pour toutes les espèces, le premier échantillon entré dans la base sera XXXXXX0000A et j'aimerais que lorsque je reprends une espèce, le numéro passe en XXXXXX0000B et ainsi de suite pour une espèce donnée.
    En gros je pense qu'il faut un peu de code pour retrouver dans la base le dernier "numéro" de l'espèce et lui faire un +1 pour passer à la lettre suivante.
    Mais je n'arrive pas à le faire.

    Exemple concret : ANNSPI0045A, ANNSPI0045B sont dans la table et je souhaite rajouter un échantillon de ANNSPI0045 et j'aimerais qu'automatiquement le numéro se mette en ANNSPI0045C.

    J'espère avoir été plus claire et ne pas vous avoir encore plus perdu.

    Merci de votre aide en tous cas !

  5. #5
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 908
    Par défaut
    Bonjour,
    La première idée qu'il me vient à l'esprit est le code ASCII.
    Je ne sais pas si l'on peut et je n'ai jamais essayé sous VBA, mais avec le recordset, tu lirais ta table de données.
    Tu extraits les données qui t'intéresse pour identifié ton truc et avec le code ASCII tu pourrais comparer si ta dernière lettre correspond à la dernière ou non.
    De là, tu pourrais trouver ton incrémentation.
    Comme je l'ai dit en haut, je ne sais pas si c'est possible sous VBA mais orientes toi par là

  6. #6
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 53
    Par défaut
    Salut,
    Je pense que c'est un peu ce sur quoi je suis partie avec des bouts de code trouvé sur internet, mais comme je l'ai dit plus haut, je n'arrive pas à coder.
    Mon 65 dans le code fait référence au code ASCII (la lettre A) mais je pense que je l'utilise mal.
    Je débute vraiment avec Access et le code VBA du coup je galère un peu.

  7. #7
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 129
    Par défaut
    En vba ça donne à peu près ça (non testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'dernier échantillon
    ech=dmax("moncode","matable","moncode like 'ANNSPI0045%'")
    'derniere lettre
    ind=right(ech,1)
    '+1
    ind=chr(asc(ind)+1)
    'echantillon suivant
    ech=left(ech,10) & ind
    NB : on n'a droit qu'à 26 échantillons...
    Ca serait plus souple de faire 3 champs dans la table :
    - famille
    - espèce
    - n° échantillon

  8. #8
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 53
    Par défaut
    On n'aura pas plus de 26 échantillons de la même espèce donc ça posera pas de problèmes.
    Et c'est pas aussi simple que ça en fait j'ai 2 tables, une table espèce, avec la "filiation de la famille", l'espèce, une date, mon numéro auto personnalisé (clé)... et une table échantillon avec le numéro d'échantillon (clé de la table), les numéros d'espèces de ma première table, le lieu de l'échantillonnage, le solvant dans lequel il se trouve... bref et du coup j'ai créé un formulaire pour ajouter des échantillons à partir de ma table échantillon. j'ai déjà du coup le numéro de l'espèce qui est récupéré et je veux juste y ajouter une lettre.

    Pour ton code, on me met pour ech Variable non définie, il faut que je le remplace par quelque chose ?
    J'ai remplacé par ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'dernier échantillon
    ech = DMax("Clé_échantillon", "Table_échantillon", "Clé_échantillon like 'ANNSPI0001%'")
    'derniere lettre
    ind = Right(ech, 1)
    '+1
    ind = Chr(Asc(ind) + 1)
    'echantillon suivant
    ech = Left(ech, 10) & ind
    Et le like ANNSPI0001% ça marchera quelque soit la famille ?

  9. #9
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 129
    Par défaut
    Citation Envoyé par Nanille Voir le message
    Pour ton code, on me met pour ech Variable non définie, il faut que je le remplace par quelque chose ?
    il faut déclarer les variables ech & ind...

    Citation Envoyé par Nanille Voir le message
    Et le like ANNSPI0001% ça marchera quelque soit la famille ?
    Ben non il faut remplacer ANNSPI0001 par une variable qui contient l'espèce considérée !

  10. #10
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 53
    Par défaut
    Bon ben j'essayerais de faire tout ça, et je te tiendrais au courant.
    Désolée pour mes questions "idiotes", mais je ne m'y connait pas du tout en VBA, du coup je ne connais pas encore tout ce qui peut sembler être la base pour la plupart des gens ici..

  11. #11
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 129
    Par défaut
    On a tous débuté un jour et encore bcp à apprendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    dim ech as string, ind as string
    'espèce considérée
    ech="ANNSPI0001"
    'dernier échantillon
    ech = DMax("Clé_échantillon", "Table_échantillon", "Clé_échantillon like '" & ech & "%'")
    'derniere lettre
    ind = Right(ech, 1)
    '+1
    ind = Chr(Asc(ind) + 1)
    'echantillon suivant
    ech = Left(ech, len(ech)-1) & ind

  12. #12
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Par défaut
    Salut nico84,Nanille,Gado2600 et User

    c'est mieux avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Clé_échantillon like '" & ech & "?'"
    '%' sous access c'est '*' mais '?' suffit puisqu'il correspond à un seul caractère.

    Mais s'il n'y a pas encore d'enregistrement DMax() renvoi null...
    puisque le 'numéro de l'espèce' est connu, que je nommerai 'CodeEspece' alors l'échantillon sera:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echantillon = CodeEspece & Chr(Asc(Nz(Right(DMax("Clé_échantillon", "Table_échantillon", "Clé_échantillon like '" & CodeEspece & "?'"),1),"@"))+1)
    si ton 'numéro de l'espèce' n'est pas ton code de début d'échantillon il faut le remplacer en conséquence et utiliser éventuellement un DLookup().

  13. #13
    Membre averti
    Femme Profil pro
    Inscrit en
    Juin 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2013
    Messages : 53
    Par défaut
    Salut !

    ça marche très bien avec le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echantillon = CodeEspece & Chr(Asc(Nz(Right(DMax("Clé_échantillon", "Table_échantillon", "Clé_échantillon like '" & CodeEspece & "?'"),1),"@"))+1)
    Du coup je l'ai gardé.
    Tandis qu'avec le premier code j'avais une erreur d'exécution : "Utilisation incorrecte de Null" on ne devait plus être très loin du résultat (j'ai mis en propriété non Null mes champs pour que les utilisateurs ne puissent pas entrer de nouvel enregistrement sans tout renseigner ça vient peut-être de là) mais comme ça marche maintenant c'est nickel !

    Merci à tous de m'avoir donné un peu de votre temps.

    A bientôt pour une nouvelle question !

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

Discussions similaires

  1. Incrémenter des lettres plutôt que des chiffres
    Par Bluestorm dans le forum Développement
    Réponses: 5
    Dernier message: 03/03/2015, 17h43
  2. incrémentation des lettres
    Par atmar dans le forum Access
    Réponses: 9
    Dernier message: 31/12/2008, 14h38
  3. [Puces et numéros] Pas d'incrémentation des lettres
    Par Alqualonde dans le forum Word
    Réponses: 6
    Dernier message: 02/11/2007, 14h54
  4. transformer des lettres en chifres
    Par hassanibi dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 06/09/2005, 08h54
  5. Comment entrer des lettres accentuées sous postgresql ?
    Par Chihuahua dans le forum Requêtes
    Réponses: 11
    Dernier message: 28/08/2003, 08h04

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