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

IHM Discussion :

Concaténer sous condition [AC-2013]


Sujet :

IHM

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut Concaténer sous condition
    Bonjour,

    j'aimerais savoir si, dans un formulaire en mode continu, il est possible de concaténer deux champs 1 et 2 seulement si le champ 2 ne contient pas telle ou telle valeur.

    Il y aurait donc soit

    [champ1] &" " & [champ2]

    soit seulement

    [champ1]

    si mon champ2 contient certaines valeurs.

    Merci

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Tu as la fonction VRAIFAUX ou IIF en anglais pour faire cela. Comme source du contrôle résultat, tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = VRAIFAUX (Tacondition; [champ1]; [champ1] &" " & [champ2])
    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    Bonsoir Madefemere et merci pour ta réponse,

    en effet ça fonctionne quand je mets le code directement dans la source du contrôle, par contre je pense qu'il va falloir que je fasse ça en VBA car mon contrôle alterne une source ou l'autre au clic sur un bouton.

    J'ai essayé de le faire mais je me retrouve avec un #Nom ? affiché dans le contrôle quand je passe sur la source avec le iif.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If Me.ncrs.ControlSource = "nomCommercial" Then
        Me.ncrs.ControlSource = IIf([prefixeRS] = "Monsieur" Or [prefixeRS] = "Madame", [raisonSociale], [raisonSociale] & " " & [prefixeRS])
        Me.Auto_EnTete0.Caption = "RAISON SOCIALE"
    Else
        Me.ncrs.ControlSource = "nomCommercial"
        Me.Auto_EnTete0.Caption = "NOM COMMERCIAL"
    End If
    Qu'est ce qui ne va pas ?

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Je pense que c'est parce que tu n'instancies pas correctement le nom du champ [prefixeRS] ou cela n'existe même pas dans ton formulaire ??
    Et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    If Me.ncrs.ControlSource = "nomCommercial" Then
        Me.ncrs.ControlSource = IIf(Me.prefixeRS = "Monsieur" Or Me.prefixeRS = "Madame", Me.raisonSociale, Me.raisonSociale & " " & Me.prefixeRS)
        Me.Auto_EnTete0.Caption = "RAISON SOCIALE"
    Else
        Me.ncrs.ControlSource = "nomCommercial"
        Me.Auto_EnTete0.Caption = "NOM COMMERCIAL"
    End If
    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    Bonsoir,

    Petit soucis en effet, le champ prefixeRS n'existait pas dans mon formulaire, je l'ai donc ajouté mais cela ne fonctionne toujours pas, ni avec l'un, ni avec l'autre des codes ci-dessus, j'ai toujours #Nom ? qui s'affiche.

    C'est la concaténation qui semble poser problème car par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ncrs.ControlSource = IIf([prefixeRS] = "Monsieur" Or [prefixeRS] = "Madame", "raisonSociale", "raisonSociale" & "prefixeRS")
    n'affiche pas #Nom ? mais seulement "raison Sociale" pour tous les enregistrements

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Plutôt que ta condition est toujours "VRAI" ?
    De plus, dans ta concaténation, au lieu d'attribuer la valeur du champ à la concaténation des valeurs, tu attribues au champ les valeurs "texte" : "raisonSociale" si la condition est vraie ET "raisonSociale" & "prefixeRS" si c'est faux

    Essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ncrs.ControlSource = IIf((Me.prefixeRS = "Monsieur" Or Me.prefixeRS = "Madame"), Me.raisonSociale, Me.raisonSociale & " " & Me.prefixeRS)
    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    OK je vois mais malheureusement ça ne fonctionne toujours pas

    Ce qui marche parfaitement, directement dans la source contrôle de la zone de texte ncrs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux(([prefixeRS]="Monsieur" Ou [prefixeRS]="Madame");[raisonSociale];[raisonSociale] & " " & [prefixeRS])
    Ce qui ne marche pas : en VBA, ceci ne provoque pas d'erreur (n'affiche pas #Nom ?) mais n'affiche que la raisonSociale peu importe que la condition soit vrai ou faux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ncrs.ControlSource = IIf(([prefixeRS] = "Monsieur" Or [prefixeRS] = "Madame"), [raisonSociale], [raisonSociale] & " " & [prefixeRS])
    Mais pourquoi est-ce que ça ne fonctionne pas en VBA ???

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    Je crois qu'il y a confusion dans ton utilisation des propriétés d'une zone de texte :
    - ControlSource permet d'attribuer une valeur Texte qui va être calculée.
    - Pour mettre une valeur ou tester la valeur d'une zone de texte, il suffit d'utiliser son nom ou la propriété Value.
    Ce qui donnerait cela à mon avis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If Me.ncrs = "nomCommercial" Then
        Me.ncrs = IIf(Me.prefixeRS = "Monsieur" Or Me.prefixeRS = "Madame", Me.raisonSociale, Me.raisonSociale & " " & Me.prefixeRS)
        Me.Auto_EnTete0.Caption = "RAISON SOCIALE"
    Else
        Me.ncrs = "nomCommercial"
        Me.Auto_EnTete0.Caption = "NOM COMMERCIAL"
    End If
    NOTA : Par contre je n'ai pas compris ce que tu veux faire dans ton test :
    Si ncrs = NomCommercial alors
    Modifier sa valeur
    Sinon
    ncrs = NomCommercial

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    Tu as raison, je pense qu'en effet je m'emmele un peu les pinceaux entre le nom et le controlSource de la zone de texte.

    Ce que je voudrais faire c'est alterner au clic sur un bouton soit un type d'affichage, soit un autre.

    Mon code actuel, très simple, qui fonctionne est celui-là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub btnSwitch_Click()
     
    If Me.ncrs.ControlSource = "raisonSociale" Then
        Me.ncrs.ControlSource = "nomCommercial"
        Me.Auto_EnTete0.Caption = "NOM COMMERCIAL"
    Else
        Me.ncrs.ControlSource = "raisonSociale"
        Me.Auto_EnTete0.Caption = "RAISON SOCIALE"
    End If
     
    End Sub
    et je voudrais donc remplacer "raisonSociale" par la concaténation sous condition dont on parle.

    J'essaye ce que tu as mis demain, je te remercie encore pour ton aide.

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    Voila je viens d'essayer et malheureusement ça ne fonctionne pas

    Es-tu sur qu'il ne faut pas mettre le controlSource madefemere, parce qu'avec ton dernier code le résultat est plutôt particulier...

    Quand je clique sur le bouton, c'est le nom commercial ou la raison sociale de mon établissement qui est remplacé par "nomCommercial" ou par "SARL"...

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Ton formulaire étant en mode continu, pourquoi ne pas faire la concaténation dans la requête qui alimente le formulaire ?

    Philippe

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 421
    Points : 132
    Points
    132
    Par défaut
    Ceci fonctionne évidemment parfaitement, j'y avais pensé il y a quelques jours puis ca m'était sorti de la tête

    Problème résolu, merci à toi Philippe ainsi qu'à madefemere pour s'être penché sur mon problème

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

Discussions similaires

  1. Concaténer plusieurs lignes sous condition
    Par Melanie_DIR7 dans le forum Excel
    Réponses: 13
    Dernier message: 29/01/2017, 10h39
  2. [XL-2010] Concaténer des cellules sous condition
    Par alexisgaudet dans le forum Excel
    Réponses: 10
    Dernier message: 17/09/2014, 10h07
  3. [AC-2010] Concaténation sous conditions dans select
    Par akkyshan dans le forum Access
    Réponses: 1
    Dernier message: 28/03/2014, 10h42
  4. [Toutes versions] Concaténer des champs, sous conditions
    Par SylvainM dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 08/03/2014, 21h06
  5. Distribution d une concaténation sous condition
    Par alexandrek dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/01/2011, 23h16

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