Plusieurs cellules dans une seule
Fermé
Cuberdon
-
18 oct. 2010 à 12:24
Raymond PENTIER Messages postés 58747 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 4 décembre 2024 - 21 oct. 2010 à 05:50
Raymond PENTIER Messages postés 58747 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 4 décembre 2024 - 21 oct. 2010 à 05:50
A voir également:
- Plusieurs cellules dans une seule
- Formule excel pour additionner plusieurs cellules - Guide
- Aller à la ligne dans une cellule excel - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Verrouiller cellules excel - Guide
- Fusionner plusieurs feuilles excel en une seule - Guide
10 réponses
Raymond PENTIER
Messages postés
58747
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
4 décembre 2024
17 248
19 oct. 2010 à 01:41
19 oct. 2010 à 01:41
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.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
18 oct. 2010 à 13:09
18 oct. 2010 à 13:09
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+
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
18 oct. 2010 à 16:30
18 oct. 2010 à 16:30
OK pour la solution de lermite222, mais si le problème concerne un grand nombre de cellules, il va peut être falloir programmer
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
18 oct. 2010 à 16:35
18 oct. 2010 à 16:35
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
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
Modifié par ccm81 le 20/10/2010 à 10:03
Modifié par ccm81 le 20/10/2010 à 10:03
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
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
20 oct. 2010 à 12:33
20 oct. 2010 à 12:33
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+
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
20 oct. 2010 à 17:03
20 oct. 2010 à 17:03
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+
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
20 oct. 2010 à 17:34
20 oct. 2010 à 17:34
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+
ccm81
Messages postés
10903
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
19 novembre 2024
2 428
20 oct. 2010 à 17:47
20 oct. 2010 à 17:47
le with range("Tab") fait référence à une plage nommée Tab de la feuille et n'a rien a voir avec un tableau VB
et les .Cells qui suivent se réfèrent à cette plage et non a un tableau VB
tu devrais essayer ...
a+
et les .Cells qui suivent se réfèrent à cette plage et non a un tableau VB
tu devrais essayer ...
a+
Raymond PENTIER
Messages postés
58747
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
4 décembre 2024
17 248
21 oct. 2010 à 05:50
21 oct. 2010 à 05:50
Alors, Cuberdon ?