Je souhaite obtenir la fonction suivant :
sur l'ensemble d'un fichier excel dès que l'on rencontre la ponctuation "deux points" passer le texte en non gras.
exemple :
texte texte : test test test...
texte texte texte : test test
...
Je pense qu'une macro pourrait m'aider à gagner du temps !
Macro à mettre dans le worksheet de la feuille à traiter :
Sub normal()
Dim c As Range
For Each c In ActiveSheet.UsedRange
If InStr(c, ":") > 0 Then
lg = Len(c.Value)
c.Characters(Start:=InStr(c, ":"), Length:=lg - InStr(c, ":")).Font.FontStyle = "Normal"
End If
Next
Juste une petite remarque Via55. Je m'aperçois que la toute dernière lettre reste en gras.
y aurait-il un moyen de mettre l'ensemble du texte (jusqu'à la dernière lettre) après les : en non gras. MERCI !
Oh dsl petite erreur de transcription
modifier ainsi la lige 5 de la macro :
c.Characters(Start:=InStr(c, ":"), Length:=lg - InStr(c, ":") + 1).Font.FontStyle = "Normal"
ou
c.Characters(Start:=InStr(c, ":")+1, Length:=lg - InStr(c, ":")).Font.FontStyle = "Normal" si tu veux que les : restent en gras
Cdlmnt
Voilà Via55, je viens de tester et la macro fonctionne très bien jusqu'au bout sur une feuille.
Peut-on obtenir le même résultat sur l'ensemble d'un classeur (j'ai tenté en sélectionnant plusieurs onglets en même temps puis en sélectionnant une zone avec plusieurs onglets) mais la requête ne passe pas, elle reste sur la feuille active.
Existerait-il une possibilité ? Si oui, je suis preneuse ;)
Merci beaucoup !! Marie
Oui ça ne fonctionne que sur une feuille parce que je t'avais dit de mettre la macro dans le Worksheet de la feuille à traiter ,
mais si tu veux que la macro soit disponible dans tout le classeur il suffit de la mettre dans un Module tout simplement (Insertion Module dans l'Editeur VBA), après elle s'appliquera dans la feuille à partir de laquelle tu la lanceras
Si au contraire tu veux qu'elle s'applique automatiquement à TOUTES les feuilles du classeur dès son lancement, il faut toujours la mettre dans un module puis la modifier ainsi en rajoutant ces lignes après celle Dim C..:
Je découvre avec toi l'action dans un classeur. J'ai tenté de placer le code dans un module de l'Editeur VBA mais je dois mal faire... la fonction s'applique trjs et uniquement au bouton de la feuille active.
Si tu le veux bien, je te laisse ma maquette pour que tu regardes.
1) j'ai mis toutes les macros dans le même module (et supprimé les modules vides)
2) les 2 boutons dans Modele sont gênants; je n'ai laissé qu'un seul bouton qui lance la macro principale de création des onglets
puis cette macro principale lance elle même la macro dispatch qui remplit les onglets puis la macro normal qui les mets en forme (en rajoutant dans cette macro les lignes que je te donnais dans mon dernier message pour boucler sur tous les onglets)
3) Laisser un bouton dans chaque onglet n'est pas terrible et va provoquer une erreur si on clique dessus donc j'ai mis dans la macro principale une ligne qui supprime le bouton dans l'onglet créé
Voilà c'est bouclé, j'ai terminé mes mises en forme et le fichier fonctionne à merveille !!
Merci pour ton aide précieuse :)) sans toi je n'aurais pas pu arriver à un résultat aussi opérationnel et net.
Et parce que la question est flou, on demande des explications pour ne pas répondre à côté on hérite d'un moins un
Drôle de mentalité, je m'en souviendrais
Ah non désolé, j'ai pensé que le - signifiait que le commentaire n'avait pas d'intérêt particulier pour la réponse.
Je ne pensais pas qu'il pouvait avoir une incidence quelconque pour toi... il est retiré :) Bonne soirée.
Marie.
Peut-on obtenir le même résultat sur l'ensemble d'un classeur (j'ai tenté en sélectionnant plusieurs onglets en même temps puis en sélectionnant une zone avec plusieurs onglets) mais la requête ne passe pas, elle reste sur la feuille active.
Existerait-il une possibilité ? Si oui, je suis preneuse ;)
Merci beaucoup !!
Marie
mais si tu veux que la macro soit disponible dans tout le classeur il suffit de la mettre dans un Module tout simplement (Insertion Module dans l'Editeur VBA), après elle s'appliquera dans la feuille à partir de laquelle tu la lanceras
Si au contraire tu veux qu'elle s'applique automatiquement à TOUTES les feuilles du classeur dès son lancement, il faut toujours la mettre dans un module puis la modifier ainsi en rajoutant ces lignes après celle Dim C..:
For n= 1 to Sheets.Count
Sheets(n).Select
puis rajouter un Next n avant le End sub
Cdlmnt
Je découvre avec toi l'action dans un classeur. J'ai tenté de placer le code dans un module de l'Editeur VBA mais je dois mal faire... la fonction s'applique trjs et uniquement au bouton de la feuille active.
Si tu le veux bien, je te laisse ma maquette pour que tu regardes.
https://www.cjoint.com/?0FDlnXxlHVF
D'avance merci.
Bon dimanche !
Marie.
1) j'ai mis toutes les macros dans le même module (et supprimé les modules vides)
2) les 2 boutons dans Modele sont gênants; je n'ai laissé qu'un seul bouton qui lance la macro principale de création des onglets
puis cette macro principale lance elle même la macro dispatch qui remplit les onglets puis la macro normal qui les mets en forme (en rajoutant dans cette macro les lignes que je te donnais dans mon dernier message pour boucler sur tous les onglets)
3) Laisser un bouton dans chaque onglet n'est pas terrible et va provoquer une erreur si on clique dessus donc j'ai mis dans la macro principale une ligne qui supprime le bouton dans l'onglet créé
https://www.cjoint.com/?0FDnpIAt0NF
Bon dimanche également
Voilà c'est bouclé, j'ai terminé mes mises en forme et le fichier fonctionne à merveille !!
Merci pour ton aide précieuse :)) sans toi je n'aurais pas pu arriver à un résultat aussi opérationnel et net.
Au plaisir.
Marie.