A voir également:
- Formule pour mettre en gras excel
- Formule excel pour additionner plusieurs cellules - Guide
- Formule excel si et - Guide
- Excel mise en forme conditionnelle formule - Guide
- Formule excel moyenne - Guide
- Ecrire en gras sur whatsapp - Guide
24 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
22 nov. 2007 à 18:31
22 nov. 2007 à 18:31
De rien :-)
Bonne soirée à toi
Bonne soirée à toi
Salut
Mettre en gras une partie d'un texte sous Microsoft Excel :
Comment faire pour mettre dans une cellule une partie seulement du texte en gras ?
Sans VBA, c'est enfantin, tu le sélectionnes et tu cliques sur l'icone "gras".
Par VBA, tu peux utiliser la position de la sous chaine pour le faire :
*** :
Sub MettreEnGras()
Range("A1") = "Automobile"
'Mettre en gras "bile"
Range("A1").Characters(7, 4).Font.Bold = True
End Sub
*** .
Denis Michon, (N°816)
Source => http://www.excelabo.net/excel/formatstexte.php
Je pense, que tu peux appelé une fonction, "MettreEnGras()" le résultat en cours de "calcul" ; et cette appel de la fonction, se trouve dans la formule, au bon endroit. La fonction, tu la fais toi-même, avec de l'aide, en te basant sur l'exemple intéressant ci-dessus. merci.
C'est très dur, de trouver une information, sur la fonction "style" ; à placer dans une formule !
Pour Microsoft Excel (c'est dur), comme avec OpenOffice.org Calc (plus facile de trouver) .
=> On fait, créé, un style, et on l'applique directement dans (à partir de) la formule ? (j'ai un doute)
merci .
à+
Mettre en gras une partie d'un texte sous Microsoft Excel :
Comment faire pour mettre dans une cellule une partie seulement du texte en gras ?
Sans VBA, c'est enfantin, tu le sélectionnes et tu cliques sur l'icone "gras".
Par VBA, tu peux utiliser la position de la sous chaine pour le faire :
*** :
Sub MettreEnGras()
Range("A1") = "Automobile"
'Mettre en gras "bile"
Range("A1").Characters(7, 4).Font.Bold = True
End Sub
*** .
Denis Michon, (N°816)
Source => http://www.excelabo.net/excel/formatstexte.php
Je pense, que tu peux appelé une fonction, "MettreEnGras()" le résultat en cours de "calcul" ; et cette appel de la fonction, se trouve dans la formule, au bon endroit. La fonction, tu la fais toi-même, avec de l'aide, en te basant sur l'exemple intéressant ci-dessus. merci.
C'est très dur, de trouver une information, sur la fonction "style" ; à placer dans une formule !
Pour Microsoft Excel (c'est dur), comme avec OpenOffice.org Calc (plus facile de trouver) .
=> On fait, créé, un style, et on l'applique directement dans (à partir de) la formule ? (j'ai un doute)
merci .
à+
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
27 juin 2011 à 12:49
27 juin 2011 à 12:49
Très bel exemple de remontée de sujet, périmé depuis 4 ans, pour donner une réponse totalement inexacte.
@pijaku
En fait, j'avais cette question justement "maintenant" (sauf pour le format) et je dois dire que la réponse de banbar règle à la perfection mon problème de concaténer plusieurs cellule, puisque je n'ai pas besoin de conserver les caractères gras (je n'en ai pas) Alors cette remonté de sujet, environ 28 jours avant mon besoin "maintenant", est pas loin d'être une bénédiction ;-)
En fait, j'avais cette question justement "maintenant" (sauf pour le format) et je dois dire que la réponse de banbar règle à la perfection mon problème de concaténer plusieurs cellule, puisque je n'ai pas besoin de conserver les caractères gras (je n'en ai pas) Alors cette remonté de sujet, environ 28 jours avant mon besoin "maintenant", est pas loin d'être une bénédiction ;-)
Pour ceux qui pourraient ultérieurement utiliser ce fourm. Voici ma solution que je trouve plus simple que le VBA pour ce que je voulais faire.
Ce que je voulais faire: concaténation en gardant la mise en forme d'un % et du texte.
Solution (exemple): =TEXTE(B2/B5;"0,00%")&" Patates"
B2 et B5 contenaient ce que l'on a appel couramment des chiffres !
Ce que je voulais faire: concaténation en gardant la mise en forme d'un % et du texte.
Solution (exemple): =TEXTE(B2/B5;"0,00%")&" Patates"
B2 et B5 contenaient ce que l'on a appel couramment des chiffres !
Salut
Si tu peux "eriiic", s'il te plaît, utilises "Microsoft Excel Viewer", pour voir comment on voient la chose ; merci .
=> Ce sera très instructif ; pas de macro, vba, ou "autres trucs" activés ...
Regardes aussi avec OpenOffice.org Calc ; merci ; tous le monde n'a pas office ...
Essayes, si tu veux et si tu peux, heinn ;-), de faire des exemples visibles correctement par tous .
(merci)
Pour ma part ; je ne dit pas de faire ; comme l'exemple proposé au Post #8 :
B1: =A1&A2&A3&A4 (pour concaténer)
Mais plutôt ; si c'est possible :
B1: =MettreEnGras(A1)&MettreEnItalique(A2)&NeutreDefaut(A3)&NeutreDefaut(A4) (pour concaténer)
=> On appelle la fonction ; ici pour la mise en forme du texte, dans la formule ! ;-)
(Fonction que l'on fait soit-même!!)
heu, dans Excel, c'est pas possible d'utiliser la fonction caché "style", comme dans OpenOffice.org Calc ?
Je dit caché, car j'ai pas trouvé d'infos ... (voir svp liens posts précédents) .
merci "eriiic" et merci à tous .
à+
Si tu peux "eriiic", s'il te plaît, utilises "Microsoft Excel Viewer", pour voir comment on voient la chose ; merci .
=> Ce sera très instructif ; pas de macro, vba, ou "autres trucs" activés ...
Regardes aussi avec OpenOffice.org Calc ; merci ; tous le monde n'a pas office ...
Essayes, si tu veux et si tu peux, heinn ;-), de faire des exemples visibles correctement par tous .
(merci)
Pour ma part ; je ne dit pas de faire ; comme l'exemple proposé au Post #8 :
B1: =A1&A2&A3&A4 (pour concaténer)
Mais plutôt ; si c'est possible :
B1: =MettreEnGras(A1)&MettreEnItalique(A2)&NeutreDefaut(A3)&NeutreDefaut(A4) (pour concaténer)
=> On appelle la fonction ; ici pour la mise en forme du texte, dans la formule ! ;-)
(Fonction que l'on fait soit-même!!)
heu, dans Excel, c'est pas possible d'utiliser la fonction caché "style", comme dans OpenOffice.org Calc ?
Je dit caché, car j'ai pas trouvé d'infos ... (voir svp liens posts précédents) .
merci "eriiic" et merci à tous .
à+
Bonjour,
Bon... ce post est un peu ancien mais je suis devant le même problème.
Mon but est également de concaténer des cellules qui pourront selon une variable de date être en gras ou pas.
La solution que j'envisage est donc de créer en VBA une fonction "conservformat" qui me permettra de garder le format de la cellule source tel que dans l'exemple suivant:
=CONCATENER(A1;conservformat(A2);A3)
Ainsi le format de la cellule A2 sera conservé dans ma cellule de destination.
Voici mon début de code:
Function ConservFormat(rngCells As Range) As Double
Application.Volatile
Dim cell As Range
ConservFormat = ???
On Error Resume Next
For Each cell In rngCells
If cell.Font.Bold Then ConservFormat = ???
Next cell
End Function
Comme vous le voyez l'idée est de détecter quelles cellules sont en gras pour mettre une condition de format dans la fonction. Mais il me manque justement la condition de format...
bon je ne sais pas si je suis clair, mais dans le cas où vous comprendriez mon problème, avez-vous une idée de comment faire?
Merci à vous
Bon... ce post est un peu ancien mais je suis devant le même problème.
Mon but est également de concaténer des cellules qui pourront selon une variable de date être en gras ou pas.
La solution que j'envisage est donc de créer en VBA une fonction "conservformat" qui me permettra de garder le format de la cellule source tel que dans l'exemple suivant:
=CONCATENER(A1;conservformat(A2);A3)
Ainsi le format de la cellule A2 sera conservé dans ma cellule de destination.
Voici mon début de code:
Function ConservFormat(rngCells As Range) As Double
Application.Volatile
Dim cell As Range
ConservFormat = ???
On Error Resume Next
For Each cell In rngCells
If cell.Font.Bold Then ConservFormat = ???
Next cell
End Function
Comme vous le voyez l'idée est de détecter quelles cellules sont en gras pour mettre une condition de format dans la fonction. Mais il me manque justement la condition de format...
bon je ne sais pas si je suis clair, mais dans le cas où vous comprendriez mon problème, avez-vous une idée de comment faire?
Merci à vous
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
21 nov. 2007 à 19:01
21 nov. 2007 à 19:01
Bonsoir,
C'est possible mais tes valeurs perdront le type numérique, ce sera une chaine de caractère.
C1: ="[" & DROITE("0000" & A1;4) & ";" & DROITE("0000" & B1;4) & "]"
eric
C'est possible mais tes valeurs perdront le type numérique, ce sera une chaine de caractère.
C1: ="[" & DROITE("0000" & A1;4) & ";" & DROITE("0000" & B1;4) & "]"
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai le même genre de problême actuellement...
En fait, moi je veux assigner un nouveau format aux texte écris dans ma cellule source, dans ma cellule finale...
Quelqu'un vient de me donner un bon coup de pouce avec la formule excel texte....
j'avais un format de chiffre que je voulais avoir en format monétaire... fac ma concatener ressemble maintenant à.. =CONCATENER(QW589;RJ589;TW589&TEXTE(UB589;"# ## ##0_ $");UO589;QW590;QW591)
Cela dit j'ai un autre problême... je veux que RJ589 et TEXTE(UB589;"# ## ##0_ $" affichent leur résulat en gras... comment faire ?
Je veux procéder sans macro si possible, ce fichier opèrera sur plusieurs ordinateurs....
En fait, moi je veux assigner un nouveau format aux texte écris dans ma cellule source, dans ma cellule finale...
Quelqu'un vient de me donner un bon coup de pouce avec la formule excel texte....
j'avais un format de chiffre que je voulais avoir en format monétaire... fac ma concatener ressemble maintenant à.. =CONCATENER(QW589;RJ589;TW589&TEXTE(UB589;"# ## ##0_ $");UO589;QW590;QW591)
Cela dit j'ai un autre problême... je veux que RJ589 et TEXTE(UB589;"# ## ##0_ $" affichent leur résulat en gras... comment faire ?
Je veux procéder sans macro si possible, ce fichier opèrera sur plusieurs ordinateurs....
ilan27
Messages postés
394
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
15 juin 2009
36
2 oct. 2007 à 16:38
2 oct. 2007 à 16:38
Bonjour,
Tu as essayé de voir parmi les fonctions proposées sur Excel?
Insertion>Fonction, et tu choisis les options qui te conviennent
Tu as essayé de voir parmi les fonctions proposées sur Excel?
Insertion>Fonction, et tu choisis les options qui te conviennent
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 418
2 oct. 2007 à 16:42
2 oct. 2007 à 16:42
Non thierry, je n'ai hélas pas de solution, mais si quelqu'un vous donne la bonne idée, je pourrais peut être aussi résoudre mon problème, soulevé quelques minutes avant le votre.
Cf pour info le fil:"regroupement de données"
On suit nos réponses respectives, et on se les refile si ça marche.?
CRDLMNT
Cf pour info le fil:"regroupement de données"
On suit nos réponses respectives, et on se les refile si ça marche.?
CRDLMNT
Oui j'ai regardé les fonctions proposées par Excel, mais j'ai rien trouvé qui pouvait correspondre a mes besoins (remarque c'est Excel en anglais, du coup j'ai peut etre raté quelque chose).
IS c'est quelqu'un sait comment avoir le meme resultat avec une macro,je suis pas contre.
Merci d'avance
IS c'est quelqu'un sait comment avoir le meme resultat avec une macro,je suis pas contre.
Merci d'avance
zarakoff
Messages postés
40
Date d'inscription
samedi 30 juin 2007
Statut
Membre
Dernière intervention
28 décembre 2009
5
2 oct. 2007 à 21:01
2 oct. 2007 à 21:01
Bonsoir,
Voilà une piste :
Soit A1 = "Bonjour
A2 = "ça va"
A3 contiendra la formule suivante :
=concatener(a1;" ";a2)
bon, je n'ai pas excel sous la main et du coup je ne sais pas si la mise en gras de bonjour est conservé.
A tester.
A+
zarakoff
Voilà une piste :
Soit A1 = "Bonjour
A2 = "ça va"
A3 contiendra la formule suivante :
=concatener(a1;" ";a2)
bon, je n'ai pas excel sous la main et du coup je ne sais pas si la mise en gras de bonjour est conservé.
A tester.
A+
zarakoff
Justement, là est mon probleme, la formule ne conserve pas le format des cellules, du coup on obtient un simplement Bonjour ca va.
Et en mettant la cellule en gras, on obtient Bonjour ca va.
Donc comme ca pas moyen d'avoir Bonjour ca va
Et en mettant la cellule en gras, on obtient Bonjour ca va.
Donc comme ca pas moyen d'avoir Bonjour ca va
Salut
Mettre en gras une partie d'un texte sous Microsoft Excel :
https://sebsauvage.net/temp/wink/excel_vbarecord.html
Source => http://www.commentcamarche.net/forum
/affich-2073115-excel-comment-mettre-en-gras-avec-une-macro
Fonctions "cachées" XL4 ; Astuce récente : lire.cellule() ; sur (C) 2006 Excel Downloads :
https://www.excel-downloads.com/threads/astuce-recente-lire-cellule.32955/
Savoir si les cellules sélectionnées (Excel) sont en gras et italiques :
http://www.codyx.org/snippet_savoir-si-cellules-selectionnees-excel-sont-gras-italiques_336.aspx
merci .
à+
Mettre en gras une partie d'un texte sous Microsoft Excel :
https://sebsauvage.net/temp/wink/excel_vbarecord.html
Source => http://www.commentcamarche.net/forum
/affich-2073115-excel-comment-mettre-en-gras-avec-une-macro
Fonctions "cachées" XL4 ; Astuce récente : lire.cellule() ; sur (C) 2006 Excel Downloads :
https://www.excel-downloads.com/threads/astuce-recente-lire-cellule.32955/
Savoir si les cellules sélectionnées (Excel) sont en gras et italiques :
http://www.codyx.org/snippet_savoir-si-cellules-selectionnees-excel-sont-gras-italiques_336.aspx
Public Function IsBoldItalic(ByVal MyRange As Range) As String Dim rCell As Range For Each rCell In MyRange IsBoldItalic = IsBoldItalic & rCell.Address & " :" & vbCrLf IsBoldItalic = IsBoldItalic & vbTab & "Gras : " & CBool(rCell.Font.Bold) & vbCrLf IsBoldItalic = IsBoldItalic & vbTab & "Italique : " & CBool(rCell.Font.Italic) & vbCrLf Next rCell End Function Sub EXEMPLE() Debug.Print IsBoldItalic(Range("A1:A4")) ' *** RESULTAT : *** '$A$1 : ' Gras : Faux ' Italique : Faux '$A$2 : ' Gras : Vrai ' Italique : Faux '$A$3 : ' Gras : Faux ' Italique : Vrai '$A$4 : ' Gras : Vrai ' Italique : Vrai End Sub
merci .
à+
Merci Anonyme pour toutes ces recherches, mais je n'ai rien trouvé qui correspondait a mon probleme.
En fait c'est plus compliqué que juste mettre en gras une partie de la cellule.
Un aute exemple:
en A1: Bonjour_
en A2: ca va_
en A3: oui_
en A4: et toi?
en B1: =A1&A2&A3&A4 (pour concatener)
et j'obtiens:
Bonjour_ca va_oui_et toi?
au lieu de
Bonjour_ca va_oui_et toi?
En gro je voudrais conserver le format lors de la concatenation.
Merci d'avance
En fait c'est plus compliqué que juste mettre en gras une partie de la cellule.
Un aute exemple:
en A1: Bonjour_
en A2: ca va_
en A3: oui_
en A4: et toi?
en B1: =A1&A2&A3&A4 (pour concatener)
et j'obtiens:
Bonjour_ca va_oui_et toi?
au lieu de
Bonjour_ca va_oui_et toi?
En gro je voudrais conserver le format lors de la concatenation.
Merci d'avance
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
3 oct. 2007 à 12:32
3 oct. 2007 à 12:32
Bonjour Thierry,
Pas facile mais interessante ta question.
J'ai d'abord voulu créer une fonction remplaçant CONCATENER mais impossible à résoudre.
J'ai donc créé un sub qui analyse la formule des cellules que tu lui passes en sélectionnant des plages et colle le résultat dans la cellule immédiatement à droite.
Je ne fais presque pas de controle donc ces formules doivent se limiter à = A1 & A2 & ... et faire référence à des cellules qui ne contiennent que des chaines. Les attributs récupérés sont : gras, italique, souligné simple, couleur. Je n'ai pas regarder mais récupérer la police et la taille doit etre possible
Bien sûr c'est un premier jet mais c'est fonctionnel. Il faudra completer avec un user form permettant de choisir l'offset de destination, les attributs à récupérer, etc. J'ai prévu également de pouvoir insérer un retour chariot où l'on veut (pour vaucluse ;-)) mais non traité pour l'instant
Un exemple plus parlant : http://www.cijoint.fr/cij45591193727506.xls
Tu sélectionnes par exemple F3:F4 et F6:F8 et tu lances la macro RecupFormatCel
Tu vas pouvoir te faire de jolis dégradés ;-)
eric
Pas facile mais interessante ta question.
J'ai d'abord voulu créer une fonction remplaçant CONCATENER mais impossible à résoudre.
J'ai donc créé un sub qui analyse la formule des cellules que tu lui passes en sélectionnant des plages et colle le résultat dans la cellule immédiatement à droite.
Je ne fais presque pas de controle donc ces formules doivent se limiter à = A1 & A2 & ... et faire référence à des cellules qui ne contiennent que des chaines. Les attributs récupérés sont : gras, italique, souligné simple, couleur. Je n'ai pas regarder mais récupérer la police et la taille doit etre possible
Bien sûr c'est un premier jet mais c'est fonctionnel. Il faudra completer avec un user form permettant de choisir l'offset de destination, les attributs à récupérer, etc. J'ai prévu également de pouvoir insérer un retour chariot où l'on veut (pour vaucluse ;-)) mais non traité pour l'instant
Un exemple plus parlant : http://www.cijoint.fr/cij45591193727506.xls
Tu sélectionnes par exemple F3:F4 et F6:F8 et tu lances la macro RecupFormatCel
Tu vas pouvoir te faire de jolis dégradés ;-)
eric
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
3 oct. 2007 à 14:55
3 oct. 2007 à 14:55
Re,
nouvelle version qui permet d'inserer une chaine "vbLf" forçant le retour à la ligne à l'intérieur du texte d'une cellule
http://www.cijoint.fr/cij2036478627532.xls
Attention toujours faire référence à une cellule, je ne traite pas (encore?) les formules du type =A1 & "blablabla" & A3 & ...
eric
nouvelle version qui permet d'inserer une chaine "vbLf" forçant le retour à la ligne à l'intérieur du texte d'une cellule
http://www.cijoint.fr/cij2036478627532.xls
Attention toujours faire référence à une cellule, je ne traite pas (encore?) les formules du type =A1 & "blablabla" & A3 & ...
eric
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
3 oct. 2007 à 16:41
3 oct. 2007 à 16:41
Slt Anonyme,
Pour Open Office je ne me suis jamais penché sur les macros. Sans doute adaptable facilement.
Pour ce qui est de faire une fonction c'était mon idée de départ mais pas si facile crois moi. Dès que l'on retourne la valeur plus moyen de continuer le traitement pour faire la mise en forme et d'acceder à l'adresse sans avoir une référence circulaire, et si on s'y prend autrement on perd les attributs déjà mis... (à creuser mais pour l'instant j'en suis là)
A la limite l'option de faire une proc présente un avantage : pouvoir traiter un tableau déjà fait pour peu qu'on libère les cellules recevant le résultat, par contre pas de mise à jour dynamique :-s
Mais bon, il y a des améliorations possibles, c'était au départ pour voir la faisabilité sans faire trop de contrôles ni d'analyse trop poussée de la formule.
A défaut du viewer voici une capture écran.
Les formules de concaténation sont en colonne H, le résultat de la macro en colonne I
J'ai pris l'option d'une chaine spécifique pour les retours à ligne, d'où les "vbLf"
http://www.cijoint.fr/cij73148756327527.jpg
Le code en VBA pour adaptation en Open Office:
eric
Pour Open Office je ne me suis jamais penché sur les macros. Sans doute adaptable facilement.
Pour ce qui est de faire une fonction c'était mon idée de départ mais pas si facile crois moi. Dès que l'on retourne la valeur plus moyen de continuer le traitement pour faire la mise en forme et d'acceder à l'adresse sans avoir une référence circulaire, et si on s'y prend autrement on perd les attributs déjà mis... (à creuser mais pour l'instant j'en suis là)
A la limite l'option de faire une proc présente un avantage : pouvoir traiter un tableau déjà fait pour peu qu'on libère les cellules recevant le résultat, par contre pas de mise à jour dynamique :-s
Mais bon, il y a des améliorations possibles, c'était au départ pour voir la faisabilité sans faire trop de contrôles ni d'analyse trop poussée de la formule.
A défaut du viewer voici une capture écran.
Les formules de concaténation sont en colonne H, le résultat de la macro en colonne I
J'ai pris l'option d'une chaine spécifique pour les retours à ligne, d'où les "vbLf"
http://www.cijoint.fr/cij73148756327527.jpg
Le code en VBA pour adaptation en Open Office:
Const LF As String = "vblf" Sub RecupFormatCel() Dim c1 As Range, c2 As Range, dest As Range Dim i As Integer, long1 As Long, ptr1 As Long, ptr2 As Long Dim formatCel As Variant Dim ListeRef As Variant For Each c1 In Selection f = c1.Formula If Left(f, 1) <> "=" Then 'formule ? Exit Sub Else f = Mid(c1.Formula, 2) 'oui: eliminer = End If Set dest = c1.Offset(0, 1) 'cellule de destination dest.Value = c1.Value ListeRef = Split(f, "&") ' découper la formule ' ' remplacement des "vbLF" par vbLf While InStr(1, LCase(dest.Value), LF) pos = InStr(1, LCase(dest.Value), LF) dest = Left(dest.Value, pos - 1) & vbLf & Mid(dest.Value, pos + Len(LF)) Wend ' récupération des formats ptr1 = 1 For i = 0 To UBound(ListeRef) Set c2 = Range(ListeRef(i)) ' adresse de la chaine long1 = Len(c2.Value) ' longueur de la chaine 'ptr2 = ptr2 + long1 If LCase(c2.Value) = LF Then ' traitement vbLF long1 = 1 Else With c2.Font formatCel = .FontStyle dest.Characters(Start:=ptr1, Length:=long1).Font.FontStyle = formatCel formatCel = .ColorIndex dest.Characters(Start:=ptr1, Length:=long1).Font.ColorIndex = formatCel formatCel = .Underline dest.Characters(Start:=ptr1, Length:=long1).Font.Underline = formatCel End With End If ptr1 = ptr1 + long1 Next i Next c1 End Sub Sub test() Range("H3:H5,H7:H8").Select RecupFormatCel End Sub Sub raz() Range("I3:I8").ClearContents End Sub
eric
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
3 oct. 2007 à 16:56
3 oct. 2007 à 16:56
Pour compléter les difficultés rencontrées sur la fonction, les attributs texte appliqués sur le texte d'une cellule (et non pas de la cellule elle même) sont perdus dès la mise dans une variable VBA. Ils ne sont manipulables que dans la cellule elle-même.
Si tu trouves une astuce pour les manipuler directement dans VBA je suis preneur, tous les pb seraient réglés, moi je n'ai pas trouvé
Maintenant il faut essayer avec des fonctions séparées comme dans ton exemple, je n'ai pas pensé à cette piste. A tester...
eric
Si tu trouves une astuce pour les manipuler directement dans VBA je suis preneur, tous les pb seraient réglés, moi je n'ai pas trouvé
Maintenant il faut essayer avec des fonctions séparées comme dans ton exemple, je n'ai pas pensé à cette piste. A tester...
eric
Bonjour,
Merci de vous pencher autant sur ma question, j'en attendais pas tant. Visiblement il n'y a pas de reponse pas trop compliquée.
Mais mettre à la main en gras la quantité de données que j'ai est bien inférieur au temps passer a essayer de faire ca rapidement, du coup il n'y a pas trop de valeur ajoutée.
Si vous voulez continuer à chercher une solution, il n'y a pas de problème, je garderai un oeil sur la discussion, mais de mon perspective, c'est plus simple de laisser tomber et de faire a la main. Merci a eriiic et a anonyme.
Ciao
Thierry
Merci de vous pencher autant sur ma question, j'en attendais pas tant. Visiblement il n'y a pas de reponse pas trop compliquée.
Mais mettre à la main en gras la quantité de données que j'ai est bien inférieur au temps passer a essayer de faire ca rapidement, du coup il n'y a pas trop de valeur ajoutée.
Si vous voulez continuer à chercher une solution, il n'y a pas de problème, je garderai un oeil sur la discussion, mais de mon perspective, c'est plus simple de laisser tomber et de faire a la main. Merci a eriiic et a anonyme.
Ciao
Thierry
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
3 oct. 2007 à 19:55
3 oct. 2007 à 19:55
Slt Thierry,
tu es sûr d'avoir bien lu les réponses ?
Tu ouvres le fichier joint au post 10, tu ouvres ton fichier, tu sélectionnes les cellules de ton fichier où se trouve les formules de concatenation, et tu lances la macro et dans les cellules à coté tu trouves la chaine formatée avec les gras, couleurs etc
et si tu ouvres celui ci : http://www.cijoint.fr/cij77852548227558.xls
tu peux même choisir d'écraser tes formules (offset 0) ou de coller le résultat 20 colonnes plus loin si tu veux préserver tes cellules occupées
eric
tu es sûr d'avoir bien lu les réponses ?
Tu ouvres le fichier joint au post 10, tu ouvres ton fichier, tu sélectionnes les cellules de ton fichier où se trouve les formules de concatenation, et tu lances la macro et dans les cellules à coté tu trouves la chaine formatée avec les gras, couleurs etc
et si tu ouvres celui ci : http://www.cijoint.fr/cij77852548227558.xls
tu peux même choisir d'écraser tes formules (offset 0) ou de coller le résultat 20 colonnes plus loin si tu veux préserver tes cellules occupées
eric
thierry
>
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
3 oct. 2007 à 22:44
3 oct. 2007 à 22:44
Bonsoir,
Effectivement j'ai lu un peu trop vite les reponses. Tes macros m'aident bien en fait donc merci beaucoup.
Par contre de toute facon je dois avoir fini demain, donc pour ma part je vais en rester là.
A plus
Effectivement j'ai lu un peu trop vite les reponses. Tes macros m'aident bien en fait donc merci beaucoup.
Par contre de toute facon je dois avoir fini demain, donc pour ma part je vais en rester là.
A plus
Salut
merci beaucoup "eriiic" pour les infos, l'aide, et la conversion pour OpenOffice.org Calc !
(merci à tous aussi, de réfléchir au problème) ou auX problèmeS soulevés dans les réponses ! :-)
(Essayons de donner une solution, à toutes les questions posées ici, indirectement dans les réponses)
* Le tableur, Microsoft Excel ou OpenOffice.org Calc, c'est pas facile ! ...
merci "eriiic", et merci à tous, pour plus d'infos et d'aide . merci .
à+
merci beaucoup "eriiic" pour les infos, l'aide, et la conversion pour OpenOffice.org Calc !
(merci à tous aussi, de réfléchir au problème) ou auX problèmeS soulevés dans les réponses ! :-)
(Essayons de donner une solution, à toutes les questions posées ici, indirectement dans les réponses)
* Le tableur, Microsoft Excel ou OpenOffice.org Calc, c'est pas facile ! ...
merci "eriiic", et merci à tous, pour plus d'infos et d'aide . merci .
à+
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
3 oct. 2007 à 19:57
3 oct. 2007 à 19:57
Derniere version avec choix de l'offset : http://www.cijoint.fr/cij77852548227558.xls
(offset 0 remplace les formules par les chaines mises en forme)
Const LF As String = "vblf"
Sub RecupFormatCel()
Dim c1 As Range, c2 As Range, dest As Range
Dim i As Integer, long1 As Long, ptr1 As Long, offset1 As Long
Dim formatCel As Variant
Dim ListeRef As Variant
Dim msg As String
msg = "A quel offset (en colonnes) coller le résultat ?" & vbCrLf
msg = msg & "(si offset = 0 la formule d'origine " & vbCrLf
msg = msg & "sera remplacée par la chaine formatée)"
offset1 = InputBox(msg, "Choix offset résultat")
For Each c1 In Selection
f = c1.Formula
If Left(f, 1) <> "=" Then 'formule ?
MsgBox ("Erreur" & vbCrLf & "La cellule " & c1.Address & " ne contient pas de formule de concatenation")
Exit Sub
Else
f = Mid(c1.Formula, 2) 'oui: eliminer =
End If
Set dest = c1.Offset(0, offset1) 'cellule de destination
dest.Value = c1.Value
ListeRef = Split(f, "&") ' découper la formule
'
' remplacement des "vbLF" par vbLf
While InStr(1, LCase(dest.Value), LF)
pos = InStr(1, LCase(dest.Value), LF)
dest = Left(dest.Value, pos - 1) & vbLf & Mid(dest.Value, pos + Len(LF))
Wend
' récupération des formats
ptr1 = 1
For i = 0 To UBound(ListeRef)
Set c2 = Range(ListeRef(i)) ' adresse de la chaine
long1 = Len(c2.Value) ' longueur de la chaine
If LCase(c2.Value) = LF Then
' traitement vbLF
long1 = 1
Else
With c2.Font
formatCel = .FontStyle
dest.Characters(Start:=ptr1, Length:=long1).Font.FontStyle = formatCel
formatCel = .ColorIndex
dest.Characters(Start:=ptr1, Length:=long1).Font.ColorIndex = formatCel
formatCel = .Underline
dest.Characters(Start:=ptr1, Length:=long1).Font.Underline = formatCel
End With
End If
ptr1 = ptr1 + long1
Next i
Next c1
End Sub
Sub test()
Range("H3:H5,H7:H8").Select
RecupFormatCel
End Sub
Sub raz()
Range("I3:I8").ClearContents
End Sub
(offset 0 remplace les formules par les chaines mises en forme)
Const LF As String = "vblf"
Sub RecupFormatCel()
Dim c1 As Range, c2 As Range, dest As Range
Dim i As Integer, long1 As Long, ptr1 As Long, offset1 As Long
Dim formatCel As Variant
Dim ListeRef As Variant
Dim msg As String
msg = "A quel offset (en colonnes) coller le résultat ?" & vbCrLf
msg = msg & "(si offset = 0 la formule d'origine " & vbCrLf
msg = msg & "sera remplacée par la chaine formatée)"
offset1 = InputBox(msg, "Choix offset résultat")
For Each c1 In Selection
f = c1.Formula
If Left(f, 1) <> "=" Then 'formule ?
MsgBox ("Erreur" & vbCrLf & "La cellule " & c1.Address & " ne contient pas de formule de concatenation")
Exit Sub
Else
f = Mid(c1.Formula, 2) 'oui: eliminer =
End If
Set dest = c1.Offset(0, offset1) 'cellule de destination
dest.Value = c1.Value
ListeRef = Split(f, "&") ' découper la formule
'
' remplacement des "vbLF" par vbLf
While InStr(1, LCase(dest.Value), LF)
pos = InStr(1, LCase(dest.Value), LF)
dest = Left(dest.Value, pos - 1) & vbLf & Mid(dest.Value, pos + Len(LF))
Wend
' récupération des formats
ptr1 = 1
For i = 0 To UBound(ListeRef)
Set c2 = Range(ListeRef(i)) ' adresse de la chaine
long1 = Len(c2.Value) ' longueur de la chaine
If LCase(c2.Value) = LF Then
' traitement vbLF
long1 = 1
Else
With c2.Font
formatCel = .FontStyle
dest.Characters(Start:=ptr1, Length:=long1).Font.FontStyle = formatCel
formatCel = .ColorIndex
dest.Characters(Start:=ptr1, Length:=long1).Font.ColorIndex = formatCel
formatCel = .Underline
dest.Characters(Start:=ptr1, Length:=long1).Font.Underline = formatCel
End With
End If
ptr1 = ptr1 + long1
Next i
Next c1
End Sub
Sub test()
Range("H3:H5,H7:H8").Select
RecupFormatCel
End Sub
Sub raz()
Range("I3:I8").ClearContents
End Sub
UsulArrakis
Messages postés
7405
Date d'inscription
vendredi 28 mars 2003
Statut
Contributeur
Dernière intervention
27 janvier 2022
3 187
4 oct. 2007 à 08:36
4 oct. 2007 à 08:36
Pour suivre
très belle démo pour les styles appliqués au texte, mais qu'en est-il quand il s'agit d'un format personnalisé ?
exemple :
valeurs entrées : A1=5 B1=10
valeurs affichées : A1=0005 B1=0010
et j'aimerais réussir à concatener les valeurs en conservant leur format (ex : C1 = [0005;0010]
Est-ce possible ?
Merci pour votre aide !
...faut vraiment que je me mette aux macro -_-
exemple :
valeurs entrées : A1=5 B1=10
valeurs affichées : A1=0005 B1=0010
et j'aimerais réussir à concatener les valeurs en conservant leur format (ex : C1 = [0005;0010]
Est-ce possible ?
Merci pour votre aide !
...faut vraiment que je me mette aux macro -_-