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 :

VBA Excel - Concaténer chaine de caractères


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Points : 76
    Points
    76
    Par défaut VBA Excel - Concaténer chaine de caractères
    Bonjour,

    Je souhaite pouvoir concaténer une chaine de caractère sous 2 conditions (en plus d'être <> "").

    En parcourant le forum, j'ai réussi à écrire le code ci-dessous pour concaténer les champs AG12, AW12, BE12 puis AI12, AY12 et BG12, si ils ne sont pas vides.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    For Each C In ThisWorkbook.Worksheets("Datas dossiers personnels").Range("AG12,AW12,BE12")
            If C <> "" Then
                Texte = Texte & C.Value & ", "
            End If
        Next C
    Numerodocumentconcat_temp = Left(Texte, Len(Texte) - 2)
     
    For Each D In ThisWorkbook.Worksheets("Datas dossiers personnels").Range("AI12,AY12,BG12")
            If D <> "" Then
                Texte2 = Texte2 & D.Value & ", "
            End If
        Next D
    Paysdelivrancedocumentconcat_temp = Left(Texte2, Len(Texte2) - 2)
    Maintenant, comment est-il possible de le faire sous 2ème condition.

    En gros, je souhaite :

    Que AG12 soit pris en compte si il n'est pas vide et en plus si ET12 = "Faux documents" ou "Usurpé / Imposteur"
    Que AW12 soit pris en compte si il n'est pas vide et en plus si EU12 = "Faux documents" ou "Usurpé / Imposteur"
    Que BE12 soit pris en compte si il n'est pas vide et en plus si EV12 = "Faux documents" ou "Usurpé / Imposteur"

    Et pour la seconde partie :

    Que AI12 soit pris en compte si il n'est pas vide et en plus si ET12 = "Faux documents" ou "Usurpé / Imposteur"
    Que AY12 soit pris en compte si il n'est pas vide et en plus si EU12 = "Faux documents" ou "Usurpé / Imposteur"
    Que BG12 soit pris en compte si il n'est pas vide et en plus si EV12 = "Faux documents" ou "Usurpé / Imposteur"

    D'avance merci pour l'aide.

    Michael.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Points : 76
    Points
    76
    Par défaut
    Re-bonjour,

    J'essaie de cette manière mais je ne pense pas que je m'y prenne comme il se doit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    For Each B In ThisWorkbook.Worksheets("Datas dossiers personnels").Range("ET12,EU12,EV12")
    If B = "Faux documents" Or B = "Usurpé / Imposteur" Then
    For Each C In ThisWorkbook.Worksheets("Datas dossiers personnels").Range("AG12,AW12,BE12")
    If C <> "" Then
             Texte = Texte & C.Value & ", "
    End If
    Next C
    End If
    Next B
     
    Numerodocumentconcat_temp = Left(Texte, Len(Texte) - 2)

    Je ne pense pas que ma syntaxe soit correct ou je m'y prendre complètement de manière erronée.

    Michael.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Points : 1 156
    Points
    1 156
    Par défaut
    Bonjour,

    pas forcément très élégant mais ça marche :

    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 Texte As String
    Dim Rg1 As Variant, Rg2 As Variant
    Dim I As Integer
    Rg1 = Split("A12,C12,F12", ",")
    Rg2 = Split("H12,L12,O12", ",")
    With ThisWorkbook.Worksheets("Datas dossiers personnels")
        For I = 0 To 2
            If .Range(Rg1(I)).Value = "Faux documents" Or .Range(Rg1(I)).Value = "Usurpé / Imposteur" Then
                If .Range(Rg2(I)).Value <> "" Then
                    Texte = Texte & "," & .Range(Rg2(I)).Value
                End If
            End If
        Next I
    End With
    Texte = Mid(Texte, 2)

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Merci beaucoup une fois de plus, cela fonctionne parfaitement.

    Excellente soirée.

    Michael.

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

Discussions similaires

  1. [VBA Excel] - Exit Do, si caractère tapé (on change..)
    Par pressorus dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 11/11/2008, 16h27
  2. [VBA Excel] Liste chainée de type perso
    Par Danos dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/04/2008, 15h13
  3. VBA EXCEL : Concaténation des cellules d'une colonne
    Par kikaillo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/07/2007, 17h37
  4. [VBA] Découper une chaine de caractères
    Par rantanplan81 dans le forum VBA Access
    Réponses: 3
    Dernier message: 12/04/2007, 15h26
  5. VBA Excel: Concaténation
    Par pmboutteau dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/02/2006, 09h55

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