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

Access Discussion :

incrementation d'un format texte dans une zone de texte


Sujet :

Access

  1. #1
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 18
    Par défaut incrementation d'un format texte dans une zone de texte
    Bonjour,

    Je souhaite en renseignent dans une zone de texte d'un formulaire, le radical d'un code article (exemple 13800), rechercher dans une table tous les codes articles commençant par 13800, et prendre le dernier afin de l'incrémenter de 1 pour créer un nouveau code article.
    Exemple:si j'ai les codes
    13800 00000100
    13800 00000101
    et 13800 00000102 présents dans une table, je souhaite trouver le code max 13800 00000102 et l'incrémenter de 1 c'est à dire:13800 00000103
    Problème: Ce code article est en format texte car il y a un espace entre le 13800 et le reste du code.
    Quelqu’un pourrait t’il m'aider s'il vous plait

  2. #2
    Membre chevronné
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Par défaut
    fait un cast :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    '--codeArticle est ton codeArticle sous format string
    '--MoncodeArticle est de type Integer
    MoncodeArticle = Cint(codeArticle)

  3. #3
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 18
    Par défaut incrementation d'un format texte dans une zone de texte
    Merci d'avoir traité ma demande.
    Cependant, ce n'est pas la conversion qui me pose problème. C'est pour récupérer la valeur du radical que je renseigne dans la zone de texte qui m'embête car le début du code article peut changer, et il y en à des centaines
    exemple: début du code en:
    140000 ........
    1280000 ........
    111000 ........

    J'ai aussi un souci pour aller chercher la valeur max de tous les codes articles commençant par la valeur tapez dans la zone de texte.

    Pouvez vous m'aider SVP

  4. #4
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Salut,

    Dmax pour récupérer le maxi
    Mid et Instr pour récupérer l'incrément après l'espace
    et un Format pour conserver les zéro non significatifs qui disparaissent avec le calcul du nouvel incrément
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dim article_max as string
    Dim increment_max As String
    dim article_new as string
    article_max = dmax("CodeArticle","TableArticle","CodeArticle like '" & CodeSaisi & " *'")
    increment_max = Mid(article_max, InStr(article_max, " ") + 1)
    article_new = CodeSaisi & " " & Format(increment_max + 1, String(Len(increment_max), "0"))

  5. #5
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 18
    Par défaut incrementation d'un format texte dans une zone de texte
    Bonjour,

    Merci pour votre réponse.

    J'ai essayé la macro, mais lorsque je saisi le radical du code et que je tape "entrer" sur mon clavier erreur 94 s’affiche me disant que la valeur est NULL sur le résultat de l'expression article_max = dmax("CodeArticle","TableArticle","CodeArticle like '" & CodeSaisi & " *'").
    Est t'il possible de créer un bout de macro dans l'ordre suivant:
    -recherche des codes dans la table contenant le radical du code saisi dans la zone de texte du formulaire.
    -conversion en numérique de la partie du code situé après l'espace.
    -recherche du maxi de cette conversion en numérique.

    Connaissez vous ce bout de macro?

    En faite, ce qui m'intéresse, c'est de convertir la deuxième partie du code en numérique. Cela évitera peut être des erreurs lors de l'incrémentation du code plutôt qu'en chaîne de caractères. Mais je me trompe peut être, je débute dans ce domaine.
    Qu'en pensez-vous ?

  6. #6
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    si tu récupère une valeur null sur le dmax c'est qu'il n'a pas trouvé d'enregistrement correspondant à ton CodeSaisi.

    il faut gérer ce cas en utilisant une variable de type variant qui accepte les valeur nulles.

    Il faut bien évidemment remplacer CodeSaisi par le nom du contrôle de ton formulaire qui contient le code à rechercher, c'est peut-être pour ça que ça ne renvoit rien, CodeSaisi est une variable qui doit contenir le radical à rechercher.

    Pas besoin de rechercher tous les codes articles pour les transformer en numériques, tu n'as besoin que du dernier.
    La conversion en numérique est faite implictement par access quand on rajoute 1, c'est pour ça que j'utilise la fonction Format parceque sinon on perd les zéros non significatifs lors de la conversion.
    Et tu peux toujours tester l'incrément avec la fonction isnumeric.

    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
     
    dim article_max as variant
    Dim increment_max As String
    dim article_new as string
    article_max = dmax("CodeArticle","TableArticle","CodeArticle like '" & CodeSaisi & " *'")
    if isnull(article_max) then
      msgbox "Pas d'article trouvé"
    else
      increment_max = Mid(article_max, InStr(article_max, " ") + 1) 
      if isnumeric(increment_max) then
        article_new = CodeSaisi & " " & Format(increment_max + 1, String(Len(increment_max), "0"))
      else
         msgbox "Erreur : incrément non numérique : " & increment_max
      endif
    endif

  7. #7
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 18
    Par défaut incrementation d'un format texte dans une zone de texte
    Votre macro fonctionne. Merci beaucoup pour votre aide

    a+ tard.[/code]

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

Discussions similaires

  1. [AC-2007] Alimentation d'une zone de texte avec une zone de texte déroulante
    Par BRUNO71 dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/12/2010, 20h54
  2. Réponses: 3
    Dernier message: 06/09/2006, 10h06
  3. Réponses: 5
    Dernier message: 23/08/2006, 20h42
  4. aligner du texte dans une zone de texte
    Par hammag dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 28/07/2006, 16h56
  5. Réponses: 6
    Dernier message: 15/03/2006, 15h35

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