Plusieurs cellules dans une seule
Cuberdon
-
Raymond PENTIER Messages postés 71833 Date d'inscription Statut Contributeur Dernière intervention -
Raymond PENTIER Messages postés 71833 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je voudrais que dans une seule case puisse s'ajouter des données provenant d'autres cellules si celles-ci sont remplies...
je m'explique parce qu'un exemple vaut mieux qu'un grand discours.
Voici mon tableau (simplifié)...
A B
1 a
2 b bonjour
3 c merci
je voudrais que dans une cellule il m'indique la lettre "a" si la cellule B1 est remplie, le "b" si B2 est remplie, "c" si B3 est remplie et ainsi de suite.
Comme résultat pour le tableau ci dessus j'aurais:
b,c
D'avance merci et bonne journée
Je voudrais que dans une seule case puisse s'ajouter des données provenant d'autres cellules si celles-ci sont remplies...
je m'explique parce qu'un exemple vaut mieux qu'un grand discours.
Voici mon tableau (simplifié)...
A B
1 a
2 b bonjour
3 c merci
je voudrais que dans une cellule il m'indique la lettre "a" si la cellule B1 est remplie, le "b" si B2 est remplie, "c" si B3 est remplie et ainsi de suite.
Comme résultat pour le tableau ci dessus j'aurais:
b,c
D'avance merci et bonne journée
A voir également:
- Plusieurs cellules dans une seule
- Comment imprimer un tableau excel sur une seule page - Guide
- Excel additionner plusieurs cellules - Guide
- Regrouper plusieurs feuilles excel en une seule - Guide
- Verrouiller cellules excel - Guide
- Application se ferme toute seule android - Guide
10 réponses
Bonjour, vous trois.
Pour reprendre la proposition de lermite222 en collant davantage à la demande de Cuberdon, je suggère la formule
=CONCATENER(SI(B1="";"";A1);SI(B2="";"";A2);SI(B3="";"";A3))
Et s'il faut séparer les données par une virgule ce serat
=CONCATENER(SI(B1="";"";A1&",");SI(B2="";"";A2&",");SI(B3="";"";A3))
Si la liste est longue, ce procédé n'est pas très intéressant, et il vaudrait mieux, dans ce cas, utiliser une colonne disponible, Z par exemple, avec en Z1 la formule =SI(B1="";"";A1&",") et en Z2 la formule =Z1&SI(B2="";"";A2&",") à recopier vers le bas.
Cordialement.
Pour reprendre la proposition de lermite222 en collant davantage à la demande de Cuberdon, je suggère la formule
=CONCATENER(SI(B1="";"";A1);SI(B2="";"";A2);SI(B3="";"";A3))
Et s'il faut séparer les données par une virgule ce serat
=CONCATENER(SI(B1="";"";A1&",");SI(B2="";"";A2&",");SI(B3="";"";A3))
Si la liste est longue, ce procédé n'est pas très intéressant, et il vaudrait mieux, dans ce cas, utiliser une colonne disponible, Z par exemple, avec en Z1 la formule =SI(B1="";"";A1&",") et en Z2 la formule =Z1&SI(B2="";"";A2&",") à recopier vers le bas.
Cordialement.
Bonjour,
Y a peut-être plus simple mais en tout cas voila une solution.
Adapter les cellules à ton cas.
A+
Y a peut-être plus simple mais en tout cas voila une solution.
=CONCATENER(SI(C7<>"";C7;"");SI(C8<>"";C8;"");SI(C9<>"";C9;""))
Adapter les cellules à ton cas.
A+
OK pour la solution de lermite222, mais si le problème concerne un grand nombre de cellules, il va peut être falloir programmer
beh non, si ça doit se reproduire sur toute une colonne tu n'a que d'étirer la formule sur toutes les lignes concernées. Ou alors explique mieux ce que tu veux.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
une macro simple qui evite l'ajout d'une colonne de service
Dim nbli As Integer, li As Integer
Dim s As String
With Range("Tab")
nbli = .Rows.Count
s = ""
For li = 1 To nbli
If .Cells(li, 2) <> "" Then
s = s + .Cells(li, 1)
End If
Next li
End With
Range("Resultat").Value = s
sur la feuille
- nommer Tab la plage A1:Bxx
- nommer resultat la cellule devant recevoir le résultat
bonne suite
Dim nbli As Integer, li As Integer
Dim s As String
With Range("Tab")
nbli = .Rows.Count
s = ""
For li = 1 To nbli
If .Cells(li, 2) <> "" Then
s = s + .Cells(li, 1)
End If
Next li
End With
Range("Resultat").Value = s
sur la feuille
- nommer Tab la plage A1:Bxx
- nommer resultat la cellule devant recevoir le résultat
bonne suite
re tous,
suis-je bête... je pense que ccm81 à tout compris, sauf qu'il y a quelque petite erreurs.
A+
suis-je bête... je pense que ccm81 à tout compris, sauf qu'il y a quelque petite erreurs.
Sub Relier()
Dim LigDebut As Long ' commence à la ligne..
Dim Jusque As Long ' et va jusque la ligne..
Dim Lig As Long, Ret As String
LigDebut = 2: Jusque = 20
For Lig = LigDebut To Jusque
If Cells(Lig, "B") <> "" Then
Ret = Ret & Cells(Lig, "A") & ","
End If
Next Lig
Range("C4") = Ret ' à mettre où tu veux
End Sub
A+
oui mais le fait de nommer le tableau dans la feuille
- permet à VB de travailler sur le tableau lui même : '.Cells(li,1)' est extrait de Tab
- évitera de toucher le code si le tableau se déplace, s'allonge ... ou se rétrécit
a+
- permet à VB de travailler sur le tableau lui même : '.Cells(li,1)' est extrait de Tab
- évitera de toucher le code si le tableau se déplace, s'allonge ... ou se rétrécit
a+
Je n'ai rien contre un tableau, sauf que..
Tab étant un mot réserver il génère une erreur.
La ligne
Si le tableau ne comporte qu'une seule colonne ce qui est le cas pour les test il serait plus indiquer d'employer...
A+
Tab étant un mot réserver il génère une erreur.
La ligne
For li = 1 To nbli ' n'a aucun sens si l'ont emploi un tableau, il faut mettre
Dim Tablo As Range
Set Tablo = Range("b3:B19") 'par exemple
Dim Lig As Long, S as string
For Lig = Tablo.Row To Tablo.Row + Tablo.Rows.Count - 1
Si le tableau ne comporte qu'une seule colonne ce qui est le cas pour les test il serait plus indiquer d'employer...
Sub HH()
Dim Cel As Range
Dim Tablo As Range
Set Tablo = Range("B3:B19") 'par exemple
For Each Cel In Tablo
If Cel <> "" Then s = s & Cel.Offset(, -1)
Next Cel
End Sub
A+