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 :

supression de lignes vides [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 239
    Par défaut supression de lignes vides
    Bonjour,

    J'ai un formulaire dont certains champs peuvent rester vides (la condition n'étant pas gênantes) et donc le retour mes tous dans une seule cellule (ce qui est le but recherché).
    Le souci c'est voilà mon code (en considérant que tous les champs soient remplis):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     text = TextBox_nom.text & Chr(10) & TextBox_adresse.text & Chr(10) & TextBox_code_postal.text & _
            Chr(32) & TextBox_ville.text & Chr(32) & TextBox_cedex.text & Chr(10) & _
            TextBox_prenom_referent.text & Chr(32) & TextBox_nom_referent.text & _
            Chr(10) & TextBox_telephone.text & Chr(10) & TextBox_fax.text
    Ce code fonctionne. Seulement si par exemple les textbox contenant le nom et le prénom du référant sont vides cela me fait une ligne vide dans ma cellule.

    Je pourrais faire le bourrin avec une série de if mais je voudrais savoir si il y a un moyen plus subtil ou pas.

  2. #2
    Membre éclairé Avatar de Orhleil
    Homme Profil pro
    Intégrateur fonctionnel
    Inscrit en
    Mai 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Intégrateur fonctionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 81
    Par défaut
    Salut à toi,
    tu peux utiliser les IIf (Immediate If) qui fonctionnent comme ça :
    IIf([CONDITION], [SI VRAI], [SI FAUX])
    Du coup j'écrirais ton code comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    text = IIf(TextBox_nom.text<>vbNullString, TextBox_nom.text & Chr(10), vbNullString) & _
           IIf(TextBox_adresse.text<>vbNullString, TextBox_adresse.text & Chr(10), vbNullString) & _
           IIf(TextBox_code_postal.text<>vbNullString, TextBox_code_postal.text & Chr(32), vbNullString) & _
           IIf(TextBox_ville.text<>vbNullString, TextBox_ville.text & Chr(32), vbNullString) & _
           IIf(TextBox_cedex.text<>vbNullString, TextBox_nom.text & Chr(10), vbNullString) & _
           IIf(TextBox_prenom_referent.text<>vbNullString, TextBox_prenom_referent.text & Chr(32), vbNullString) & _
           IIf(TextBox_nom_referent.text<>vbNullString, TextBox_nom_referent.text & Chr(10), vbNullString) & _
           IIf(TextBox_telephone.text<>vbNullString, TextBox_telephone.text & Chr(10), vbNullString) & _ 
           TextBox_fax.text
    C'est plein de If, mais c'est plus propre que des If / Then

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 239
    Par défaut
    Effectivement, c'est vrai que j'avais plus dans l'idée une série de if/then. Je pense que je pourrais presque utiliser ça pour autre chose.

    Mais avant de mettre un "résolu" je vais attendre voir s'il y a mieux ou pas.

  4. #4
    Membre expérimenté
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Par défaut
    Bonjour,

    Pour une solution élégante et simple syntaxiquement , tu peux t'appuyer sur ce type :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    coordonne_client  =""
    for each control_ in array (  textbox_nom , textbox_prenom , textbox_ville )
     
    if control_ = ville  then separ = chr (32) else separ = chr (10)
    coordonne_client   = coordonne_client   & IIf(control_.Value = "", "", control_.value & separ ) 
    next

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 239
    Par défaut
    je vois pas bien à quoi sert cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    coordonne_client   = coordonne_client   & IIf(control_.Value = "", "", control_.value & separ)

    Par contre sur les IIF j'ai rajouté une ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    IIf(TextBox_nom.text<>vbNullString, TextBox_nom.text & Chr(10), vbNullString) & _
           IIf(TextBox_complementaire.text<>vbNullString, TextBox_complementaire.text & Chr(10), vbNullString) & _
           IIf(TextBox_adresse.text<>vbNullString, TextBox_adresse.text & Chr(10), vbNullString) & _
           IIf(TextBox_code_postal.text<>vbNullString, TextBox_code_postal.text & Chr(32), vbNullString) & _
           IIf(TextBox_ville.text<>vbNullString, TextBox_ville.text & Chr(32), vbNullString) & _
           IIf(TextBox_cedex.text<>vbNullString, TextBox_nom.text & Chr(10), vbNullString) & _
           IIf(TextBox_prenom_referent.text<>vbNullString, TextBox_prenom_referent.text & Chr(32), vbNullString) & _
           IIf(TextBox_nom_referent.text<>vbNullString, TextBox_nom_referent.text & Chr(10), vbNullString) & _
           IIf(TextBox_telephone.text<>vbNullString, TextBox_telephone.text & Chr(10), vbNullString) & _
           IIf(TextBox_fax.text<>vbNullString, TextBox_fax.text, vbNullString)
    et je me retrouve avec l'erreur :
    erreur de compilation :
    attendu: =
    et surligner en rouge le premier & de fin de ligne (la fin du premier IIF), je vois pas pourquoi.

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 239
    Par défaut
    J'ai résolu le souci de l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    text = IIf(TextBox_nom.text <> vbNullString, TextBox_nom.text & Chr(10), vbNullString) & _
           IIf(TextBox_complementaire.text <> vbNullString, TextBox_complementaire.text & Chr(10), vbNullString) & _
           IIf(TextBox_adresse.text <> vbNullString, TextBox_adresse.text & Chr(10), vbNullString) & _
           IIf(TextBox_code_postal.text <> vbNullString, TextBox_code_postal.text & Chr(32), vbNullString) & _
           IIf(TextBox_ville.text <> vbNullString, TextBox_ville.text & Chr(32), vbNullString) & _
           IIf(TextBox_cedex.text <> vbNullString, TextBox_nom.text & Chr(10), vbNullString) & _
           IIf(TextBox_prenom_referent.text <> vbNullString, TextBox_prenom_referent.text & Chr(32), vbNullString) & _
           IIf(TextBox_nom_referent.text <> vbNullString, TextBox_nom_referent.text & Chr(10), vbNullString) & _
           IIf(TextBox_telephone.text <> vbNullString, TextBox_telephone.text & Chr(10), vbNullString) & _
           IIf(TextBox_fax.text <> vbNullString, TextBox_fax.text, vbNullString)
    j'aurais bien aimé essayer l'autre solution mais j'ai de léger souci à la mise en place.

    Merci.

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

Discussions similaires

  1. Supression de lignes non vides
    Par sab_info dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/04/2013, 22h07
  2. Réponses: 1
    Dernier message: 12/04/2011, 14h12
  3. [XL-2003] Débutant - macro pour supression de colonnes et lignes vide
    Par domcoool dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/11/2010, 10h59
  4. [Toutes versions] Supression de ligne vide dans txt avec virgule
    Par Oh!Tofocus dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/05/2010, 20h48
  5. [CR .NET] Table croisée: compléter avec lignes vides
    Par kartben dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 29/06/2004, 10h38

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