CONCATENER si la cellule est non vide

Bonjour à tous,

Je sollicite votre aide afin de venir à bout d'une petite formule qui me permettrait de CONCATENER le contenu texte de cellules seulement si son contenu est non vide.

Voici ma formule qui fonctionne bien pour l'instant :

CONCATENER(J2; "; "; K2; "; "; L2; "; "; M2; "; "; N2; "; "; O2; "; "; P2; "; "; Q2; "; "; R2; "; "; S2; "; "; T2; "; "; U2; "; "; V2; "; "; W2; "; "; X2;)

A cette formule je voudrais lui dire de ne rien faire si la cellule est vide, car avec cette formule j'ai plein de point virgule qui se suivent à cause des cellules vides.

Pourriez-vous m'aider?

D'avance un grande merci à tous ceux qui prennent le temps de me répondre,

Nicolas.

Bonjour,

Tu peux utiliser une fonction personnalisée

Function Concatener1(Plage As Range) As String
Dim C As Range
Dim Texte As String
    For Each C In Plage
        If C <> "" Then
            Texte = Texte & C.Value & "; "
        End If
    Next C
    If Len(Texte) > 0 Then Concatener1 = Left(Texte, Len(Texte) - 2)
End Function

A+

Merci pour ta réponse.

Au risque de passer pour un ignare, pouvez-vous m'expliquer brièvement comment on utilise cette formule dans Excel 2010 SVP?

J'ai fait deux trois tentatives sans succès.

Merci par avance,

Cordialement.

Nicolas.

edit: Bonjour Frangy, supprimé

Bonjour,

Il s’agit d’une fonction personnalisée qu’il faut intégrer à un module standard du projet.

Mais comme un bon classeur vaut mieux qu’un long discours, voici un exemple

1'526nyk00.xlsm (15.68 Ko)

A+

Bonjour,

Un grd merci ça marche!

Donc ALT+F11 pour accéder à l'interface VBA puis création d'un nouveau module.

Merci encore!

Nicolas.

Bonjour a tous !

Je remonte ce message car cette formule personnalisée réalise exactement ce dont j'ai besoin, enfin presque...

Mon tableau comporte uniquement des croix (ou valeurs textuelles)dans les cellules.

Mais j'aimerai que la concaténation se réalise en référence au nom de colonne.

Donc obtenir un résultat qui dépendent de ces valeurs textuelles ou croix.

J'ai adapté le tableau du fichier précédent pour illustrer le problème mais comme je n'ai malheureusement pas de connaissances en VBA, je ne suis pas certain de comment pouvoir adapter le code...

Merci d'avance pour vos retours,

172nyk01.xlsm (17.11 Ko)

Bonjour Borrel,

Question : Le texte retourné doit-il être fonction de la seule présence d'un "x" dans une colonne ?


Je vous propose de tester la formule suivante (basée sur le code initial)

Function Concatener2(Plage As Range) As String
Dim C As Range
Dim Texte As String
    For Each C In Plage
        If C.Offset(1, 0) = "x" And C <> "" Then
            Texte = Texte & " " & C.Value
        End If
    Next C
    Concatener2 = Texte
End Function

Bonjour JFL,

Un très grand merci pour la réponse !

C'est bien x mais aussi tout autre valeur alphanumérique.

J'ai adapté la fonction, ca fonctionne mais uniquement pour la première ligne compte tenu de la modification par l'offset.

=> Comment faire en sorte que ceci puisse etre répliqué sur les lignes suivantes d'un tableau ?

Voir cellule en vert fichier joint (déja adapté).

Merci d'avance,

234nyk01-1.xlsm (17.98 Ko)

Je vous livre le code adapté :

Function Concatener2(Plage As Range, decalageLigne As Byte) As String
Dim C As Range
Dim Texte As String
    For Each C In Plage
        If C.Offset(decalageLigne, 0) <> "" And C <> "" Then
            Texte = Texte & C.Value & "; "
        End If
    Next C
    Concatener2 = Texte
End Function

La fonction étant :

=Concatener2(J1:X1;2)

Avec "2" représentant le décalage ligne par rapport à votre ligne de "Titres" (J1 à X1 dans la formule)

Merci, c'est exactement ca !!

Et j'ai rajouté Application.Volatile pour l'actualisation automatique.

Belle journée,

Rechercher des sujets similaires à "concatener vide"