Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Détection des caractères en gras dans une cellule

7 réponses
Avatar
Philippe
Bonjour,

Après un copier/coller d'un document Word dans Excel, je récupère dans une
même cellule des caractères en gras puis des caractères non gras (en
l'occurence les noms de famille sont en gras et les prénoms en police
simple)

Je souhaiterais pouvoir détecter le nombre de caractères en gras pour
pouvoir séparer les deux parties de la cellule en deux colonnes.

L'un d'entre vous aurait il une idée pour le faire ?

Avec mes remerciements anticipés,

A bientôt

Philippe

7 réponses

Avatar
j
pour savoir si le 2ème caractère de la cellule a1 est gras :
MsgBox Range("a1").Characters(2, 1).Font.FontStyle


http://jacxl.free.fr/




"Philippe" a écrit dans le message de news:

Bonjour,

Après un copier/coller d'un document Word dans Excel, je récupère dans une
même cellule des caractères en gras puis des caractères non gras (en
l'occurence les noms de famille sont en gras et les prénoms en police
simple)

Je souhaiterais pouvoir détecter le nombre de caractères en gras pour
pouvoir séparer les deux parties de la cellule en deux colonnes.

L'un d'entre vous aurait il une idée pour le faire ?

Avec mes remerciements anticipés,

A bientôt

Philippe





Avatar
Philippe
Merci beaucoup

Et pour détecter la partie de la cellule en majuscule, existe-t-il un autre
moyen que de passer par la fonction Code().

Philippe
"" a écrit dans le message de
news:uZg%
pour savoir si le 2ème caractère de la cellule a1 est gras :
MsgBox Range("a1").Characters(2, 1).Font.FontStyle


http://jacxl.free.fr/




"Philippe" a écrit dans le message de news:

Bonjour,

Après un copier/coller d'un document Word dans Excel, je récupère dans
une


même cellule des caractères en gras puis des caractères non gras (en
l'occurence les noms de famille sont en gras et les prénoms en police
simple)

Je souhaiterais pouvoir détecter le nombre de caractères en gras pour
pouvoir séparer les deux parties de la cellule en deux colonnes.

L'un d'entre vous aurait il une idée pour le faire ?

Avec mes remerciements anticipés,

A bientôt

Philippe









Avatar
j
pour savoir si le 2ème caractère de la cellule a1 est en majuscule :
MsgBox Mid(Range("a1"), 2, 1) = UCase(Mid(Range("a1"), 2, 1))




"Philippe" a écrit dans le message de news:

Merci beaucoup

Et pour détecter la partie de la cellule en majuscule, existe-t-il un
autre

moyen que de passer par la fonction Code().

Philippe
"" a écrit dans le message de
news:uZg%
pour savoir si le 2ème caractère de la cellule a1 est gras :
MsgBox Range("a1").Characters(2, 1).Font.FontStyle


http://jacxl.free.fr/




"Philippe" a écrit dans le message de news:

Bonjour,

Après un copier/coller d'un document Word dans Excel, je récupère dans
une


même cellule des caractères en gras puis des caractères non gras (en
l'occurence les noms de famille sont en gras et les prénoms en police
simple)

Je souhaiterais pouvoir détecter le nombre de caractères en gras pour
pouvoir séparer les deux parties de la cellule en deux colonnes.

L'un d'entre vous aurait il une idée pour le faire ?

Avec mes remerciements anticipés,

A bientôt

Philippe













Avatar
Frédéric Sigonneau
Bonjour,

Une fonction perso VBA (matricielle) pourrait te permettre de récupérer les deux
infos en même temps :

'============== Function NomPrenom(cell As Range)
Dim i&, pos&, Arr(0 To 1)

For i = 1 To Len(cell.Text)
If cell.Characters(i, 1).Font.Bold Then pos = i
Next

Arr(0) = Trim(Left(cell.Text, pos))
Arr(1) = Trim(Right(cell.Text, Len(cell.Text) - pos))

NomPrenom = Arr

End Function
'===============
Après avoir recopié cette fonction dans un module standard de ton classeur, si
tes données importées sont en colonne A à partir de A1 tu peux sélectionner
B1:C1 et saisir en B1
=NomPrenom(A1)
Valide avec Ctrl+Maj+Entrée et recopie B1:C1 vers le bas.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour,

Après un copier/coller d'un document Word dans Excel, je récupère dans une
même cellule des caractères en gras puis des caractères non gras (en
l'occurence les noms de famille sont en gras et les prénoms en police
simple)

Je souhaiterais pouvoir détecter le nombre de caractères en gras pour
pouvoir séparer les deux parties de la cellule en deux colonnes.

L'un d'entre vous aurait il une idée pour le faire ?

Avec mes remerciements anticipés,

A bientôt

Philippe


Avatar
Philippe
Bonsoir,

Cette petite fonction fonctionne (si j'ose dire) à merveille.

Mais ayant un a priori négatif vis à vis des formules matricielles, je
souhaiterais pouvoir intégrer un argument supplémentaire pour indiquer si
l'on veut dans la colonne le nom ou le prénom.

Je l'ai donc adapté de la fàçon suivante, mais qui malheureusement me donne
un magnifique message d'erreur !

Pourrais-tu me donner un petit coup de main ?

Merci encore

Philippe

nb : pour ma culture personnelle, pourquoi intègres-tu dans la décalration
de variables un "&" après la variable ?

Function NomPrenom(cell As Range, NouP As Range)
'Dim i&, pos&, Arr(0 To 1)
Dim i, pos, N, P, Nom, Prenom

For i = 1 To Len(cell.Text)
If cell.Characters(i, 1).Font.Bold Then pos = i
Next

Nom = Trim(Left(cell.Text, pos))
Prenom = Trim(Right(cell.Text, Len(cell.Text) - pos))

If NouP = N Then
NomPrenom = Nom
Else
NomPrenom = Prenom
End If

End Function

"Frédéric Sigonneau" a écrit dans le message
de news:
Bonjour,

Une fonction perso VBA (matricielle) pourrait te permettre de récupérer
les deux

infos en même temps :

'============== > Function NomPrenom(cell As Range)
Dim i&, pos&, Arr(0 To 1)

For i = 1 To Len(cell.Text)
If cell.Characters(i, 1).Font.Bold Then pos = i
Next

Arr(0) = Trim(Left(cell.Text, pos))
Arr(1) = Trim(Right(cell.Text, Len(cell.Text) - pos))

NomPrenom = Arr

End Function


Avatar
Alain CROS
Bonjour.

Function NomPrenom$(cell As Range, Optional NouP As Boolean = True)
Dim i&, pos&
For i = 1 To Len(cell.Text)
If cell.Characters(i, 1).Font.Bold Then pos = i
Next
If NouP Then
NomPrenom = Trim$(Left$(cell.Text, pos))
Else
NomPrenom = Trim$(Right$(cell.Text, Len(cell.Text) - pos))
End If
End Function

Si ta cell = A1, en C1 = NomPrenom(A1) ---> Nom
en D1 = NomPrenom(A1,FAUX) ---> Prenom

Le & remplace as long, le $ remplace as string

Alain CROS.

"Philippe" a écrit dans le message de news:
Bonsoir,

Cette petite fonction fonctionne (si j'ose dire) à merveille.

Mais ayant un a priori négatif vis à vis des formules matricielles, je
souhaiterais pouvoir intégrer un argument supplémentaire pour indiquer si
l'on veut dans la colonne le nom ou le prénom.

Je l'ai donc adapté de la fàçon suivante, mais qui malheureusement me donne
un magnifique message d'erreur !

Pourrais-tu me donner un petit coup de main ?

Merci encore

Philippe

nb : pour ma culture personnelle, pourquoi intègres-tu dans la décalration
de variables un "&" après la variable ?

Function NomPrenom(cell As Range, NouP As Range)
'Dim i&, pos&, Arr(0 To 1)
Dim i, pos, N, P, Nom, Prenom

For i = 1 To Len(cell.Text)
If cell.Characters(i, 1).Font.Bold Then pos = i
Next

Nom = Trim(Left(cell.Text, pos))
Prenom = Trim(Right(cell.Text, Len(cell.Text) - pos))

If NouP = N Then
NomPrenom = Nom
Else
NomPrenom = Prenom
End If

End Function

"Frédéric Sigonneau" a écrit dans le message
de news:
Bonjour,

Une fonction perso VBA (matricielle) pourrait te permettre de récupérer
les deux

infos en même temps :

'============== > > Function NomPrenom(cell As Range)
Dim i&, pos&, Arr(0 To 1)

For i = 1 To Len(cell.Text)
If cell.Characters(i, 1).Font.Bold Then pos = i
Next

Arr(0) = Trim(Left(cell.Text, pos))
Arr(1) = Trim(Right(cell.Text, Len(cell.Text) - pos))

NomPrenom = Arr

End Function






Avatar
Philippe
Merci à tous

En fait mon problème venait d'une erreur dans l'argument (Range au lieu de
String).

Bonne soirée et fin de WE

Philippe

"Alain CROS" a écrit dans le message de
news:
Bonjour.

Function NomPrenom$(cell As Range, Optional NouP As Boolean = True)
Dim i&, pos&
For i = 1 To Len(cell.Text)
If cell.Characters(i, 1).Font.Bold Then pos = i
Next
If NouP Then
NomPrenom = Trim$(Left$(cell.Text, pos))
Else
NomPrenom = Trim$(Right$(cell.Text, Len(cell.Text) - pos))
End If
End Function

Si ta cell = A1, en C1 = NomPrenom(A1) ---> Nom
en D1 = NomPrenom(A1,FAUX) ---> Prenom

Le & remplace as long, le $ remplace as string

Alain CROS.

"Philippe" a écrit dans le message de news:


Bonsoir,

Cette petite fonction fonctionne (si j'ose dire) à merveille.

Mais ayant un a priori négatif vis à vis des formules matricielles, je
souhaiterais pouvoir intégrer un argument supplémentaire pour indiquer
si


l'on veut dans la colonne le nom ou le prénom.

Je l'ai donc adapté de la fàçon suivante, mais qui malheureusement me
donne


un magnifique message d'erreur !

Pourrais-tu me donner un petit coup de main ?

Merci encore

Philippe

nb : pour ma culture personnelle, pourquoi intègres-tu dans la
décalration


de variables un "&" après la variable ?

Function NomPrenom(cell As Range, NouP As Range)
'Dim i&, pos&, Arr(0 To 1)
Dim i, pos, N, P, Nom, Prenom

For i = 1 To Len(cell.Text)
If cell.Characters(i, 1).Font.Bold Then pos = i
Next

Nom = Trim(Left(cell.Text, pos))
Prenom = Trim(Right(cell.Text, Len(cell.Text) - pos))

If NouP = N Then
NomPrenom = Nom
Else
NomPrenom = Prenom
End If

End Function

"Frédéric Sigonneau" a écrit dans le
message


de news:
Bonjour,

Une fonction perso VBA (matricielle) pourrait te permettre de
récupérer



les deux
infos en même temps :

'============== > > > Function NomPrenom(cell As Range)
Dim i&, pos&, Arr(0 To 1)

For i = 1 To Len(cell.Text)
If cell.Characters(i, 1).Font.Bold Then pos = i
Next

Arr(0) = Trim(Left(cell.Text, pos))
Arr(1) = Trim(Right(cell.Text, Len(cell.Text) - pos))

NomPrenom = Arr

End Function