Concaténer une plage avec une condition

Le
T Fred
Bonjour,
J'aurais 2 questions :

Tout d'abord, j'ai beau chercher mais je ne trouve pas le moyen de
regrouper dans la même cellule toutes les valeurs qui se trouvent sur
une plage (contenant parfois des cellules vides), séparées par un seul
espace.
La technique " =B1&" "&A2 " fonctionne bien mais lorsque j'ai 10 cases
de vides à la suite ça me fait un gros blanc.


Et pour compliquer un peu l'affaire, j'aimerais insérer le texte
uniquement si la cellule d'à côté correspond à un critère défin=
i.

Pour illustrer ça avec un exemple :
En colonnes A1:A100 des critères de sélection : H / F
En colonnes B1:B100 des prénoms (multitude de possibilités) : Pierre
Paul Jacques Marie Cécile etc

J'aimerais regrouper dans la même cellule (séparés par des espaces)
tous les prénoms de sexe masculin.

Merci pour votre aide

Fred
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #19814331
Salut à toi
à partir de la ligne 2
Colonne A le critère
Colonne B les Prénoms

Je te propose ce code à mettre dans un module standard :

i = 2
Do While i < Range("A65535").End(xlUp).Row + 1
If Range("A" & i) = "H" Then
If Range("B" & i) <> "" Then
Liste1 = Liste1 & " " & Range("B" & i)
End If
End If
If Range("A" & i) = "F" Then
If Range("B" & i) <> "" Then
Liste2 = Liste2 & " " & Range("B" & i)
End If
End If
i = i + 1
Loop
Range("C2") = Liste1
Range("C3") = Liste2

Résultat en C2 et C3

Fais des essais et dis moi !!!!!!
FS
Le #19814821
Bonjour,

Une autre approche avec une fonction perso :

'=Úns un module standard du classeur qui t'intéresse
Function TEXTE_SI(PlageCritère, Critère, PlageRecherche)
Dim cell, x&, S$
x = 1
For Each cell In PlageCritère
If cell.Value = Critère Then
If PlageRecherche.Range("A" & x).Value <> "" Then _
S = S & PlageRecherche.Range("A" & x).Value & " "
End If
x = x + 1
Next cell
TEXTE_SI = Trim(S)
End Function
'=====================================================
Dans la cellule où tu veux ta liste, pour récupérer les prénoms (dans la
plage B1:B10) masculins (sexe en A1:A10) :

=texte_si(A1:A10;"h";B1:B10)

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

T Fred a écrit :
Bonjour,
J'aurais 2 questions :

Tout d'abord, j'ai beau chercher mais je ne trouve pas le moyen de
regrouper dans la même cellule toutes les valeurs qui se trouvent sur
une plage (contenant parfois des cellules vides), séparées par un seul
espace.
La technique " ±&" "&A2 " fonctionne bien mais lorsque j'ai 10 cases
de vides à la suite ça me fait un gros blanc.


Et pour compliquer un peu l'affaire, j'aimerais insérer le texte
uniquement si la cellule d'à côté correspond à un critère défini.

Pour illustrer ça avec un exemple :
En colonnes A1:A100 des critères de sélection : H / F
En colonnes B1:B100 des prénoms (multitude de possibilités) : Pierre
Paul Jacques Marie Cécile etc ...

J'aimerais regrouper dans la même cellule (séparés par des espaces)
tous les prénoms de sexe masculin.

Merci pour votre aide

Fred


T Fred
Le #19814791
On 23 juil, 14:34, FFO
Salut à toi
à partir de la ligne 2
Colonne A le critère
Colonne B les Prénoms

Je te propose ce code à mettre dans un module standard :

i = 2
Do While i < Range("A65535").End(xlUp).Row + 1
If Range("A" & i) = "H" Then
If Range("B" & i) <> "" Then
Liste1 = Liste1 & " " & Range("B" & i)
End If
End If
If Range("A" & i) = "F" Then
If Range("B" & i) <> "" Then
Liste2 = Liste2 & " " & Range("B" & i)
End If
End If
i = i + 1
Loop
Range("C2") = Liste1
Range("C3") = Liste2

Résultat en C2 et C3

Fais des essais et dis moi !!!!!!



Salut FFO et merci pour ta réponse.

Je viens d'éssayer et il y a un bug à cet endroit là :
If Range("A" & i) = "H" Then

Malheureusement je n'y connais rien à ce language donc je ne sais pas
du tout commment réparer ça =(
T Fred
Le #19816021
On 23 juil, 15:20, FS
Bonjour,

Une autre approche avec une fonction perso :

'=Úns un module standard du classeur qui t'intéresse
Function TEXTE_SI(PlageCritère, Critère, PlageRecherche)
Dim cell, x&, S$
   x = 1
   For Each cell In PlageCritère
     If cell.Value = Critère Then
       If PlageRecherche.Range("A" & x).Value <> "" Then _
         S = S & PlageRecherche.Range("A" & x).Value & " "
     End If
     x = x + 1
   Next cell
   TEXTE_SI = Trim(S)
End Function
'======================== ========================= =====

Dans la cellule où tu veux ta liste, pour récupérer les prénoms ( dans la
plage B1:B10) masculins (sexe en A1:A10) :

=texte_si(A1:A10;"h";B1:B10)

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :http://frederic.sigonneau.free.fr/

T Fred a écrit :



> Bonjour,
> J'aurais 2 questions :

> Tout d'abord, j'ai beau chercher mais je ne trouve pas le moyen de
> regrouper dans la même cellule toutes les valeurs qui se trouvent sur
> une plage (contenant parfois des cellules vides), séparées par un s eul
> espace.
> La technique " ±&" "&A2 " fonctionne bien mais lorsque j'ai 10 case s
> de vides à la suite ça me fait un gros blanc.

> Et pour compliquer un peu l'affaire, j'aimerais insérer le texte
> uniquement si la cellule d'à côté correspond à un critère d éfini.

> Pour illustrer ça avec un exemple :
> En colonnes A1:A100 des critères de sélection : H / F
> En colonnes B1:B100 des prénoms (multitude de possibilités) : Pierr e
> Paul Jacques Marie Cécile etc ...

> J'aimerais regrouper dans la même cellule (séparés par des espace s)
> tous les prénoms de sexe masculin.

> Merci pour votre aide

> Fred- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Merci beaucoup Fred ça marche nickel =)
FFO
Le #19820161
Rebonjour à toi

Peux tu me transmettre ton document avec la macro qui Bug par ce biais
http://www.cijoint.fr/index.php
Enlèves les données confidentielles
Communiques moi le lien pour le récupérer
Merci


"T Fred" wrote:

On 23 juil, 14:34, FFO > Salut à toi
> à partir de la ligne 2
> Colonne A le critère
> Colonne B les Prénoms
>
> Je te propose ce code à mettre dans un module standard :
>
> i = 2
> Do While i < Range("A65535").End(xlUp).Row + 1
> If Range("A" & i) = "H" Then
> If Range("B" & i) <> "" Then
> Liste1 = Liste1 & " " & Range("B" & i)
> End If
> End If
> If Range("A" & i) = "F" Then
> If Range("B" & i) <> "" Then
> Liste2 = Liste2 & " " & Range("B" & i)
> End If
> End If
> i = i + 1
> Loop
> Range("C2") = Liste1
> Range("C3") = Liste2
>
> Résultat en C2 et C3
>
> Fais des essais et dis moi !!!!!!

Salut FFO et merci pour ta réponse.

Je viens d'éssayer et il y a un bug à cet endroit là :
If Range("A" & i) = "H" Then

Malheureusement je n'y connais rien à ce language donc je ne sais pas
du tout commment réparer ça =(



Publicité
Poster une réponse
Anonyme