Soit le résultat en D10 de la mise bout à bout du texte contenu dans des
cellules (A10 à C10), comme ci dessous :
=CONCATENER(A10;" " ;"puis; " ";B10;" ";"puis";" ";C10)
Comment faire pour éviter la multiplication des conditions selon que B ou C
ou B et C sont vides, pour éviter les espaces et les "puis" inutiles ?
Ex , si B10 est vide :
=Si(B10="";CONCATENER(A10;" " ;"puis; " ";C10), etc.
Quelle formule pour dire que la concaténation ne doit se faire qu'en prenant
les cellules non vides ?
D'autre part, en VBA itou : si ce sont des comboboxs qui contiennent les
textes à mettre bout à bout, comment faire pour éviter des codes lourds du
type :
If combo2.Value = empty then
ActiveCell.Value = combo1.Value + " " + combo3.Value
Else
If combo3.Value = empty then
ActiveCell.Value = combo1.Value + " " + combo2.Value
......
?
Quel code pour dire que seuls les comboboxs non vides doivent être inclus
dans la mise bout à bout ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
anonymousA
Bonjour,
parcourir la collection d'appartenance des comboboxes (Les comboboxes appartiennent toujours à une collection quelconque qu'il te convient de repérer : collection Oleobjects, shapes, controls , voire comboboxes eux-mêmes eventuellement selon la nature des combobxes dont tu parles. Il te faudra eventuellement selon leur collection d'appartenance les discriminer d'autres contrôles) par un for each et tester si le combobox est vide puis écrire au fur et à mesure une chaine de texte chaine_de_texte=chaine_de_texte + " " + cb.value.
In fine, chaine_de_texte contiendra uniquement l'association des textes contenus dans les comboboxes non vides. Il faudra peut être faire un test si tu le souhaites lors de la 1ere occurence non vide rencontrée pour eviter d'avoir un blanc au début de l'expression finale de la chaine de texte ou simplement retenir dans l'expression finale les n-1 caractères à droite de chaine_de_texte
A+
Rebonjour,
Soit le résultat en D10 de la mise bout à bout du texte contenu dans des cellules (A10 à C10), comme ci dessous : =CONCATENER(A10;" " ;"puis; " ";B10;" ";"puis";" ";C10) Comment faire pour éviter la multiplication des conditions selon que B ou C ou B et C sont vides, pour éviter les espaces et les "puis" inutiles ? Ex , si B10 est vide : =Si(B10="";CONCATENER(A10;" " ;"puis; " ";C10), etc.
Quelle formule pour dire que la concaténation ne doit se faire qu'en prenant les cellules non vides ?
D'autre part, en VBA itou : si ce sont des comboboxs qui contiennent les textes à mettre bout à bout, comment faire pour éviter des codes lourds du type : If combo2.Value = empty then ActiveCell.Value = combo1.Value + " " + combo3.Value Else If combo3.Value = empty then ActiveCell.Value = combo1.Value + " " + combo2.Value ...... ?
Quel code pour dire que seuls les comboboxs non vides doivent être inclus dans la mise bout à bout ?
Merci de votre éclairage -- Coriandre
Bonjour,
parcourir la collection d'appartenance des comboboxes (Les comboboxes
appartiennent toujours à une collection quelconque qu'il te convient de
repérer : collection Oleobjects, shapes, controls , voire comboboxes
eux-mêmes eventuellement selon la nature des combobxes dont tu parles.
Il te faudra eventuellement selon leur collection d'appartenance les
discriminer d'autres contrôles) par un for each et tester si le combobox
est vide puis écrire au fur et à mesure une chaine de texte
chaine_de_texte=chaine_de_texte + " " + cb.value.
In fine, chaine_de_texte contiendra uniquement l'association des textes
contenus dans les comboboxes non vides.
Il faudra peut être faire un test si tu le souhaites lors de la 1ere
occurence non vide rencontrée pour eviter d'avoir un blanc au début de
l'expression finale de la chaine de texte ou simplement retenir dans
l'expression finale les n-1 caractères à droite de chaine_de_texte
A+
Rebonjour,
Soit le résultat en D10 de la mise bout à bout du texte contenu dans des
cellules (A10 à C10), comme ci dessous :
=CONCATENER(A10;" " ;"puis; " ";B10;" ";"puis";" ";C10)
Comment faire pour éviter la multiplication des conditions selon que B
ou C ou B et C sont vides, pour éviter les espaces et les "puis" inutiles ?
Ex , si B10 est vide :
=Si(B10="";CONCATENER(A10;" " ;"puis; " ";C10), etc.
Quelle formule pour dire que la concaténation ne doit se faire qu'en
prenant les cellules non vides ?
D'autre part, en VBA itou : si ce sont des comboboxs qui contiennent les
textes à mettre bout à bout, comment faire pour éviter des codes lourds
du type :
If combo2.Value = empty then
ActiveCell.Value = combo1.Value + " " + combo3.Value
Else
If combo3.Value = empty then
ActiveCell.Value = combo1.Value + " " + combo2.Value
......
?
Quel code pour dire que seuls les comboboxs non vides doivent être
inclus dans la mise bout à bout ?
parcourir la collection d'appartenance des comboboxes (Les comboboxes appartiennent toujours à une collection quelconque qu'il te convient de repérer : collection Oleobjects, shapes, controls , voire comboboxes eux-mêmes eventuellement selon la nature des combobxes dont tu parles. Il te faudra eventuellement selon leur collection d'appartenance les discriminer d'autres contrôles) par un for each et tester si le combobox est vide puis écrire au fur et à mesure une chaine de texte chaine_de_texte=chaine_de_texte + " " + cb.value.
In fine, chaine_de_texte contiendra uniquement l'association des textes contenus dans les comboboxes non vides. Il faudra peut être faire un test si tu le souhaites lors de la 1ere occurence non vide rencontrée pour eviter d'avoir un blanc au début de l'expression finale de la chaine de texte ou simplement retenir dans l'expression finale les n-1 caractères à droite de chaine_de_texte
A+
Rebonjour,
Soit le résultat en D10 de la mise bout à bout du texte contenu dans des cellules (A10 à C10), comme ci dessous : =CONCATENER(A10;" " ;"puis; " ";B10;" ";"puis";" ";C10) Comment faire pour éviter la multiplication des conditions selon que B ou C ou B et C sont vides, pour éviter les espaces et les "puis" inutiles ? Ex , si B10 est vide : =Si(B10="";CONCATENER(A10;" " ;"puis; " ";C10), etc.
Quelle formule pour dire que la concaténation ne doit se faire qu'en prenant les cellules non vides ?
D'autre part, en VBA itou : si ce sont des comboboxs qui contiennent les textes à mettre bout à bout, comment faire pour éviter des codes lourds du type : If combo2.Value = empty then ActiveCell.Value = combo1.Value + " " + combo3.Value Else If combo3.Value = empty then ActiveCell.Value = combo1.Value + " " + combo2.Value ...... ?
Quel code pour dire que seuls les comboboxs non vides doivent être inclus dans la mise bout à bout ?
Merci de votre éclairage -- Coriandre
LSteph
Bonjour Coriandre,
Supprimer les puis ..et puis, ... ;-) ne pas utiliser concatener mais l'esperluette "&" soit la touche 1 de la partie dactylographique du clavier.
Soit le résultat en D10 de la mise bout à bout du texte contenu dans des cellules (A10 à C10), comme ci dessous : =CONCATENER(A10;" " ;"puis; " ";B10;" ";"puis";" ";C10) Comment faire pour éviter la multiplication des conditions selon que B ou C ou B et C sont vides, pour éviter les espaces et les "puis" inutiles ? Ex , si B10 est vide : =Si(B10="";CONCATENER(A10;" " ;"puis; " ";C10), etc.
Quelle formule pour dire que la concaténation ne doit se faire qu'en prenant les cellules non vides ?
D'autre part, en VBA itou : si ce sont des comboboxs qui contiennent les textes à mettre bout à bout, comment faire pour éviter des codes lourds du type : If combo2.Value = empty then ActiveCell.Value = combo1.Value + " " + combo3.Value Else If combo3.Value = empty then ActiveCell.Value = combo1.Value + " " + combo2.Value ...... ?
Quel code pour dire que seuls les comboboxs non vides doivent être inclus dans la mise bout à bout ?
Merci de votre éclairage -- Coriandre
Bonjour Coriandre,
Supprimer les puis
..et puis, ... ;-)
ne pas utiliser concatener mais l'esperluette "&" soit la touche 1 de la
partie dactylographique du clavier.
Soit le résultat en D10 de la mise bout à bout du texte contenu dans des
cellules (A10 à C10), comme ci dessous :
=CONCATENER(A10;" " ;"puis; " ";B10;" ";"puis";" ";C10)
Comment faire pour éviter la multiplication des conditions selon que B
ou C ou B et C sont vides, pour éviter les espaces et les "puis" inutiles ?
Ex , si B10 est vide :
=Si(B10="";CONCATENER(A10;" " ;"puis; " ";C10), etc.
Quelle formule pour dire que la concaténation ne doit se faire qu'en
prenant les cellules non vides ?
D'autre part, en VBA itou : si ce sont des comboboxs qui contiennent les
textes à mettre bout à bout, comment faire pour éviter des codes lourds
du type :
If combo2.Value = empty then
ActiveCell.Value = combo1.Value + " " + combo3.Value
Else
If combo3.Value = empty then
ActiveCell.Value = combo1.Value + " " + combo2.Value
......
?
Quel code pour dire que seuls les comboboxs non vides doivent être
inclus dans la mise bout à bout ?
Soit le résultat en D10 de la mise bout à bout du texte contenu dans des cellules (A10 à C10), comme ci dessous : =CONCATENER(A10;" " ;"puis; " ";B10;" ";"puis";" ";C10) Comment faire pour éviter la multiplication des conditions selon que B ou C ou B et C sont vides, pour éviter les espaces et les "puis" inutiles ? Ex , si B10 est vide : =Si(B10="";CONCATENER(A10;" " ;"puis; " ";C10), etc.
Quelle formule pour dire que la concaténation ne doit se faire qu'en prenant les cellules non vides ?
D'autre part, en VBA itou : si ce sont des comboboxs qui contiennent les textes à mettre bout à bout, comment faire pour éviter des codes lourds du type : If combo2.Value = empty then ActiveCell.Value = combo1.Value + " " + combo3.Value Else If combo3.Value = empty then ActiveCell.Value = combo1.Value + " " + combo2.Value ...... ?
Quel code pour dire que seuls les comboboxs non vides doivent être inclus dans la mise bout à bout ?
Merci de votre éclairage -- Coriandre
Coriandre
Tester si le combobox est vide, c'est une bonne idée, mais hélas je ne suis pas d'un niveau suffisant en VBA pour élaborer cela.
Les comboboxs (combo1, combo2, combo3, combo4) en question sont en fait des zones de listes modifiables dans un Userform.
Selon la manière dont l'utilisateur choisit de sélectionner ou non des termes dans ces listes (valeur vide ou pleine), le résultat du texte (qui est la mise bout à bout des termes des listes avec espaces et texte fixe entre ces termes), ce résultat en cellule A1 de Excel, donc, est différent.
Comment procéder ?
-- Coriandre
"anonymousA" a écrit dans le message de news:46e27eb3$0$5065$
Bonjour,
parcourir la collection d'appartenance des comboboxes (Les comboboxes appartiennent toujours à une collection quelconque qu'il te convient de repérer : collection Oleobjects, shapes, controls , voire comboboxes eux-mêmes eventuellement selon la nature des combobxes dont tu parles. Il te faudra eventuellement selon leur collection d'appartenance les discriminer d'autres contrôles) par un for each et tester si le combobox est vide puis écrire au fur et à mesure une chaine de texte chaine_de_texte=chaine_de_texte + " " + cb.value.
In fine, chaine_de_texte contiendra uniquement l'association des textes contenus dans les comboboxes non vides. Il faudra peut être faire un test si tu le souhaites lors de la 1ere occurence non vide rencontrée pour eviter d'avoir un blanc au début de l'expression finale de la chaine de texte ou simplement retenir dans l'expression finale les n-1 caractères à droite de chaine_de_texte
A+
Rebonjour,
Soit le résultat en D10 de la mise bout à bout du texte contenu dans des cellules (A10 à C10), comme ci dessous : =CONCATENER(A10;" " ;"puis; " ";B10;" ";"puis";" ";C10) Comment faire pour éviter la multiplication des conditions selon que B ou C ou B et C sont vides, pour éviter les espaces et les "puis" inutiles ? Ex , si B10 est vide : =Si(B10="";CONCATENER(A10;" " ;"puis; " ";C10), etc.
Quelle formule pour dire que la concaténation ne doit se faire qu'en prenant les cellules non vides ?
D'autre part, en VBA itou : si ce sont des comboboxs qui contiennent les textes à mettre bout à bout, comment faire pour éviter des codes lourds du type : If combo2.Value = empty then ActiveCell.Value = combo1.Value + " " + combo3.Value Else If combo3.Value = empty then ActiveCell.Value = combo1.Value + " " + combo2.Value ...... ?
Quel code pour dire que seuls les comboboxs non vides doivent être inclus dans la mise bout à bout ?
Merci de votre éclairage -- Coriandre
Tester si le combobox est vide, c'est une bonne idée, mais hélas je ne suis
pas d'un niveau suffisant en VBA pour élaborer cela.
Les comboboxs (combo1, combo2, combo3, combo4) en question sont en fait des
zones de listes modifiables dans un Userform.
Selon la manière dont l'utilisateur choisit de sélectionner ou non des
termes dans ces listes (valeur vide ou pleine), le résultat du texte (qui
est la mise bout à bout des termes des listes avec espaces et texte fixe
entre ces termes), ce résultat en cellule A1 de Excel, donc, est différent.
Comment procéder ?
--
Coriandre
"anonymousA" <anonymousA@wanadoo.fr> a écrit dans le message de
news:46e27eb3$0$5065$ba4acef3@news.orange.fr...
Bonjour,
parcourir la collection d'appartenance des comboboxes (Les comboboxes
appartiennent toujours à une collection quelconque qu'il te convient de
repérer : collection Oleobjects, shapes, controls , voire comboboxes
eux-mêmes eventuellement selon la nature des combobxes dont tu parles. Il
te faudra eventuellement selon leur collection d'appartenance les
discriminer d'autres contrôles) par un for each et tester si le combobox
est vide puis écrire au fur et à mesure une chaine de texte
chaine_de_texte=chaine_de_texte + " " + cb.value.
In fine, chaine_de_texte contiendra uniquement l'association des textes
contenus dans les comboboxes non vides.
Il faudra peut être faire un test si tu le souhaites lors de la 1ere
occurence non vide rencontrée pour eviter d'avoir un blanc au début de
l'expression finale de la chaine de texte ou simplement retenir dans
l'expression finale les n-1 caractères à droite de chaine_de_texte
A+
Rebonjour,
Soit le résultat en D10 de la mise bout à bout du texte contenu dans des
cellules (A10 à C10), comme ci dessous :
=CONCATENER(A10;" " ;"puis; " ";B10;" ";"puis";" ";C10)
Comment faire pour éviter la multiplication des conditions selon que B ou
C ou B et C sont vides, pour éviter les espaces et les "puis" inutiles ?
Ex , si B10 est vide :
=Si(B10="";CONCATENER(A10;" " ;"puis; " ";C10), etc.
Quelle formule pour dire que la concaténation ne doit se faire qu'en
prenant les cellules non vides ?
D'autre part, en VBA itou : si ce sont des comboboxs qui contiennent les
textes à mettre bout à bout, comment faire pour éviter des codes lourds
du type :
If combo2.Value = empty then
ActiveCell.Value = combo1.Value + " " + combo3.Value
Else
If combo3.Value = empty then
ActiveCell.Value = combo1.Value + " " + combo2.Value
......
?
Quel code pour dire que seuls les comboboxs non vides doivent être inclus
dans la mise bout à bout ?
Tester si le combobox est vide, c'est une bonne idée, mais hélas je ne suis pas d'un niveau suffisant en VBA pour élaborer cela.
Les comboboxs (combo1, combo2, combo3, combo4) en question sont en fait des zones de listes modifiables dans un Userform.
Selon la manière dont l'utilisateur choisit de sélectionner ou non des termes dans ces listes (valeur vide ou pleine), le résultat du texte (qui est la mise bout à bout des termes des listes avec espaces et texte fixe entre ces termes), ce résultat en cellule A1 de Excel, donc, est différent.
Comment procéder ?
-- Coriandre
"anonymousA" a écrit dans le message de news:46e27eb3$0$5065$
Bonjour,
parcourir la collection d'appartenance des comboboxes (Les comboboxes appartiennent toujours à une collection quelconque qu'il te convient de repérer : collection Oleobjects, shapes, controls , voire comboboxes eux-mêmes eventuellement selon la nature des combobxes dont tu parles. Il te faudra eventuellement selon leur collection d'appartenance les discriminer d'autres contrôles) par un for each et tester si le combobox est vide puis écrire au fur et à mesure une chaine de texte chaine_de_texte=chaine_de_texte + " " + cb.value.
In fine, chaine_de_texte contiendra uniquement l'association des textes contenus dans les comboboxes non vides. Il faudra peut être faire un test si tu le souhaites lors de la 1ere occurence non vide rencontrée pour eviter d'avoir un blanc au début de l'expression finale de la chaine de texte ou simplement retenir dans l'expression finale les n-1 caractères à droite de chaine_de_texte
A+
Rebonjour,
Soit le résultat en D10 de la mise bout à bout du texte contenu dans des cellules (A10 à C10), comme ci dessous : =CONCATENER(A10;" " ;"puis; " ";B10;" ";"puis";" ";C10) Comment faire pour éviter la multiplication des conditions selon que B ou C ou B et C sont vides, pour éviter les espaces et les "puis" inutiles ? Ex , si B10 est vide : =Si(B10="";CONCATENER(A10;" " ;"puis; " ";C10), etc.
Quelle formule pour dire que la concaténation ne doit se faire qu'en prenant les cellules non vides ?
D'autre part, en VBA itou : si ce sont des comboboxs qui contiennent les textes à mettre bout à bout, comment faire pour éviter des codes lourds du type : If combo2.Value = empty then ActiveCell.Value = combo1.Value + " " + combo3.Value Else If combo3.Value = empty then ActiveCell.Value = combo1.Value + " " + combo2.Value ...... ?
Quel code pour dire que seuls les comboboxs non vides doivent être inclus dans la mise bout à bout ?
Merci de votre éclairage -- Coriandre
Coriandre
Merci LSteph de cette formule qui va bien.
Les "et puis" étaient donnés en guise d'exemple, car il me faut garder du texte fixe entre les termes des cellules à concatener.
Et cela fonctionne très bien avec le texte à la place de tes";".
Cependant, cette formule me semble comporter l'inconvénient de multiplier les "SI", ce qui limite le nombre de cellules à concatener.
Si on a par exemple 10 cellules à concatener ainsi, comment faire sans passer par des cellules cachées de sous-concaténation ?
-- Coriandre
"LSteph" a écrit dans le message de news:%
Bonjour Coriandre,
Supprimer les puis ..et puis, ... ;-) ne pas utiliser concatener mais l'esperluette "&" soit la touche 1 de la partie dactylographique du clavier.
Soit le résultat en D10 de la mise bout à bout du texte contenu dans des cellules (A10 à C10), comme ci dessous : =CONCATENER(A10;" " ;"puis; " ";B10;" ";"puis";" ";C10) Comment faire pour éviter la multiplication des conditions selon que B ou C ou B et C sont vides, pour éviter les espaces et les "puis" inutiles ? Ex , si B10 est vide : =Si(B10="";CONCATENER(A10;" " ;"puis; " ";C10), etc.
Quelle formule pour dire que la concaténation ne doit se faire qu'en prenant les cellules non vides ?
D'autre part, en VBA itou : si ce sont des comboboxs qui contiennent les textes à mettre bout à bout, comment faire pour éviter des codes lourds du type : If combo2.Value = empty then ActiveCell.Value = combo1.Value + " " + combo3.Value Else If combo3.Value = empty then ActiveCell.Value = combo1.Value + " " + combo2.Value ...... ?
Quel code pour dire que seuls les comboboxs non vides doivent être inclus dans la mise bout à bout ?
Merci de votre éclairage -- Coriandre
Merci LSteph de cette formule qui va bien.
Les "et puis" étaient donnés en guise d'exemple, car il me faut garder du
texte fixe entre les termes des cellules à concatener.
Et cela fonctionne très bien avec le texte à la place de tes";".
Cependant, cette formule me semble comporter l'inconvénient de multiplier
les "SI", ce qui limite le nombre de cellules à concatener.
Si on a par exemple 10 cellules à concatener ainsi, comment faire sans
passer par des cellules cachées de sous-concaténation ?
--
Coriandre
"LSteph" <lecocosteph@frite.fr> a écrit dans le message de
news:%23izcYFi8HHA.484@TK2MSFTNGP06.phx.gbl...
Bonjour Coriandre,
Supprimer les puis
..et puis, ... ;-)
ne pas utiliser concatener mais l'esperluette "&" soit la touche 1 de la
partie dactylographique du clavier.
Soit le résultat en D10 de la mise bout à bout du texte contenu dans des
cellules (A10 à C10), comme ci dessous :
=CONCATENER(A10;" " ;"puis; " ";B10;" ";"puis";" ";C10)
Comment faire pour éviter la multiplication des conditions selon que B ou
C ou B et C sont vides, pour éviter les espaces et les "puis" inutiles ?
Ex , si B10 est vide :
=Si(B10="";CONCATENER(A10;" " ;"puis; " ";C10), etc.
Quelle formule pour dire que la concaténation ne doit se faire qu'en
prenant les cellules non vides ?
D'autre part, en VBA itou : si ce sont des comboboxs qui contiennent les
textes à mettre bout à bout, comment faire pour éviter des codes lourds
du type :
If combo2.Value = empty then
ActiveCell.Value = combo1.Value + " " + combo3.Value
Else
If combo3.Value = empty then
ActiveCell.Value = combo1.Value + " " + combo2.Value
......
?
Quel code pour dire que seuls les comboboxs non vides doivent être inclus
dans la mise bout à bout ?
Soit le résultat en D10 de la mise bout à bout du texte contenu dans des cellules (A10 à C10), comme ci dessous : =CONCATENER(A10;" " ;"puis; " ";B10;" ";"puis";" ";C10) Comment faire pour éviter la multiplication des conditions selon que B ou C ou B et C sont vides, pour éviter les espaces et les "puis" inutiles ? Ex , si B10 est vide : =Si(B10="";CONCATENER(A10;" " ;"puis; " ";C10), etc.
Quelle formule pour dire que la concaténation ne doit se faire qu'en prenant les cellules non vides ?
D'autre part, en VBA itou : si ce sont des comboboxs qui contiennent les textes à mettre bout à bout, comment faire pour éviter des codes lourds du type : If combo2.Value = empty then ActiveCell.Value = combo1.Value + " " + combo3.Value Else If combo3.Value = empty then ActiveCell.Value = combo1.Value + " " + combo2.Value ...... ?
Quel code pour dire que seuls les comboboxs non vides doivent être inclus dans la mise bout à bout ?