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 :

Concaténer avec deux conditions [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 70
    Par défaut Concaténer avec deux conditions
    bonjour,
    voilà j'ai un bout de code qui fonctionne très bien sur une condition mais quand j'introduis la deuxième condition il ne se passe rien.
    je butte sur ce pb depuis deux jours sans rien comprendre.
    le but étant de concatener les cellules mail si celles ci ne soient pas vides et a la condition que la colonne G contienne un "x"
    merci de votre aide

    feuil1 colonne D = adresse mail
    feuil1 colonne G = "x" ou ""
    feuil2 cellule A20 = resultat de la concatenation
    la première condition est : Sheets("Feuil1").Range("D" & i).Value <> "".
    la deuxième condition est : And Sheets("Feuil1").Range("G" & i).Value = "x").

    test effectué sur Feuil1 ligne 7 à 11 D7,D8,D9,D11 mail D10 Vide G7,G9,G10,G11 x G8 Vide

    quand je lance la procédure il ne passe passe rien dans la cellule de destination

    voici le code :

    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
    16
    17
    18
    19
    20
    21
    Sub ConcatenerTotalMailSousCondition()
     
    Dim i As Long
     
    Application.ScreenUpdating = False
     
    Sheets("Feuil2").Range("A20") = ""   ' cellule qui contiendra les mails concaténés
     
    For i = 2 To Sheets("Feuil1").Range("D20").End(xlUp).Row   ' de la cellule 2 a 20   D = colonne des mails
     
    If (Sheets("Feuil1").Range("D" & i).Value <> "" And Sheets("Feuil1").Range("G" & i).Value = "x") Then Sheets("Feuil2").Range("A20") = Sheets("Feuil2").Range("A20") & Sheets("Feuil1").Range("D" & i).Value & ";"
     
    Next
     
    Sheets("Feuil2").Range("A20") = Left(Sheets("Feuil2").Range("A20"), Len(Sheets("Feuil2").Range("A20")) - 2)
     
    Application.ScreenUpdating = True
     
     
     
    End Sub
    Comme d'habitude l'erreur doit être tellement évidente que je ne la vois pas .

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2002
    Messages : 110
    Par défaut
    pourquoi n’utilisez vous pas une formule direct dans votre feuille?
    ou a moins que se soit une bêtise de ma part

  3. #3
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 176
    Billets dans le blog
    2
    Par défaut
    Bonsoir,

    sur les cas d'opérateurs de comparaison sur du texte (=,<>, Like), VBA est sensible à la casse
    Par exemple "X" est différent de "x"
    C'est juste une piste, je ne sais pas s'il s'agit de ça

  4. #4
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 70
    Par défaut
    Citation Envoyé par tototiti2008 Voir le message
    Bonsoir,

    sur les cas d'opérateurs de comparaison sur du texte (=,<>, Like), VBA est sensible à la casse
    Par exemple "X" est différent de "x"
    C'est juste une piste, je ne sais pas s'il s'agit de ça

    bonjour,
    eh bien non ce n'est pas cela
    j'ai bien fait attention a la casse
    mais je vous remercie de votre réponse

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour


    Citation Envoyé par tototiti2008 Voir le message
    Bonsoir,

    sur les cas d'opérateurs de comparaison sur du texte (=,<>, Like), VBA est sensible à la casse
    Par exemple "X" est différent de "x"
    C'est juste une piste, je ne sais pas s'il s'agit de ça
    Oui et non. En fait, il y a une option dans VB (VBA, VB6 et même VB.net qui permet de définir un tant soit peu le mode de comparaison des chaînes de caractères

    C'est le mode par défaut. La comparaison se fait selon l'ordre déterminé par la table de caractères en vigueur. Dans ce cas, on peut dire sensible à la casse.

    La comparaison se fait selon l'ordre alphabétique, sans considération pour la casse. Les caractères accentués sont regroupés avec leur équivalent sans accent.

  6. #6
    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

    Bien qu'écrit un peu à la hussarde, ton code est correct en ce qui concerne la construction elle-même du contenu de la cellule de destination.
    Il y a par contre une maladresse dans ce que je pense vouloir être la suppression du dernier ";". c'est -1 et non -2.

    Tu t'en serais rendu compte toi-même si, en lieu et place de ce que mon petit doigt me souffle (tu as fait tes essais en ne mettant qu'un caractère dans les cellules en D), tu les avais faits avec de véritables adresses (et donc des chaines plus longues); tu aurais alors constaté qu'il manquait un caractère à la seconde chaine. Le même petit doigt me dit que tu n'es pas allé, en essais, au delà de deux cellules à prendre en considération (car tu te serais sinon rendu compte de ce que seule la dernière était tronquée).
    J'ai bon ?

  7. #7
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2011
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 70
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour

    Bien qu'écrit un peu à la hussarde, ton code est correct en ce qui concerne la construction elle-même du contenu de la cellule de destination.
    Il y a par contre une maladresse dans ce que je pense vouloir être la suppression du dernier ";". c'est -1 et non -2.

    Tu t'en serais rendu compte toi-même si, en lieu et place de ce que mon petit doigt me souffle (tu as fait tes essais en ne mettant qu'un caractère dans les cellules en D), tu les avais faits avec de véritables adresses (et donc des chaines plus longues); tu aurais alors constaté qu'il manquait un caractère à la seconde chaine. Le même petit doigt me dit que tu n'es pas allé, en essais, au delà de deux cellules à prendre en considération (car tu te serais sinon rendu compte de ce que seule la dernière était tronquée).
    J'ai bon ?

    bonjour,

    j'étais cavalier dans une vie antérieure ;-)

    pour ta première remarque le -1 a la place du -2 ne change rien pour le moment car je n'affiche aucun résultat dans la cellule cible.
    pour les cellules en colonne D elles contiennent ou pas des adresses mails ton petit doigt s'est planté ;-)

    merci pour ces pistes

  8. #8
    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
    Ah ...
    Il se trouve que si tel est le cas (chaînes de plus d'un caractère) dans des cellules en colonne D avec des "x" en colonne G, le code montré fonctionne sans problème si l'on met -1 et non -2 pour supprimer le dernier ";". Je l'ai testé.
    Et regarde --->>
    Nom : arthur.JPG
Affichages : 324
Taille : 220,2 Ko
    C'est ton code avec pour seule modification le -1

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

Discussions similaires

  1. Linq - jointure avec deux conditions
    Par boby62423 dans le forum Linq
    Réponses: 1
    Dernier message: 02/04/2009, 09h51
  2. Recherche avec deux conditions et deux boucles?
    Par neiluj26 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/10/2008, 19h49
  3. ADO avec deux conditions WHERE
    Par MuadDib_II dans le forum IHM
    Réponses: 9
    Dernier message: 29/07/2008, 15h42
  4. MINUS avec deux conditions
    Par miketidy dans le forum SQL
    Réponses: 14
    Dernier message: 24/06/2008, 09h57
  5. [VBA-E] Countif avec deux conditions
    Par bonilla dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/09/2007, 15h30

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