OVH Cloud OVH Cloud

Double problème Suppression de caractères italique et liaison

7 réponses
Avatar
Philippe DROUET
Bonjour à tous,
Voici mon premier problème.
Dans certaines cellules d'un tableau excel j'ais des noms suivis d'une
(ou deux) lettres en italique.
Ex : DURANT w <- le w en italique mais le début en normal

Comment par macro ou VBA supprimer cette (ou ces lettres) en italique
pour me retrouver uniquement avec le nom sans espace ni lettres
italiques.
Petite précision, certain noms sont des noms composés avec des espace
(que je ne veux bien sur pas supprimer !).

J'ai bien essayé avec queques fonctions de chaine, mais je n'y suis pas
arrivé :-(

Mon deuxième problème est je pense plus simple :
Lors d'un copier / coller entre deux documents avec les commandes
suivantes
Range("A1:C500").select
selection.copy
ensuite je colle dans l'autre document avec la commde pastespecial
uniquement les valeurs

je retrouve les liaisons dans le deuxième document !
Je souhaiterais ne retrouver que les valeurs !
comment faire ?

Merci d'avance.

7 réponses

Avatar
MichDenis
Bonsoir Philippe,

Tu peux essayer ceci :

Cette procédure fait une vérification seulement pour les 2 derniers caractères de chaque cellule

à toi de déterminer le nom de la feuille et la plage de cellules concernées.

'------------------------------
Sub Italique()

Dim Rg As Range
Dim C As Range

With Worksheets("Feuil1")
Set Rg = .Range("A1:A5")
End With

For Each C In Rg
For a = 1 To 2
With C.Characters(Len(C), 1)
If .Font.Italic = True Then
C = Left(C, Len(C))
End If
End With
Next
Next
Set Rg = Nothing: Set C = Nothing
End Sub
'-----------------------------


Salutations!


"Philippe DROUET" a écrit dans le message de news:
Bonjour à tous,
Voici mon premier problème.
Dans certaines cellules d'un tableau excel j'ais des noms suivis d'une
(ou deux) lettres en italique.
Ex : DURANT w <- le w en italique mais le début en normal

Comment par macro ou VBA supprimer cette (ou ces lettres) en italique
pour me retrouver uniquement avec le nom sans espace ni lettres
italiques.
Petite précision, certain noms sont des noms composés avec des espace
(que je ne veux bien sur pas supprimer !).

J'ai bien essayé avec queques fonctions de chaine, mais je n'y suis pas
arrivé :-(

Mon deuxième problème est je pense plus simple :
Lors d'un copier / coller entre deux documents avec les commandes
suivantes
Range("A1:C500").select
selection.copy
ensuite je colle dans l'autre document avec la commde pastespecial
uniquement les valeurs

je retrouve les liaisons dans le deuxième document !
Je souhaiterais ne retrouver que les valeurs !
comment faire ?

Merci d'avance.
Avatar
AV
** Problème 1 **
J'ai bien essayé avec queques fonctions de chaine, mais je n'y suis pas
arrivé :-(


Matricielle (validation par ctrl+maj+entrée) :
=GAUCHE(A1;EQUIV(VRAI;CODE(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1))>96;0)-2)

Je souhaiterais ne retrouver que les valeurs !


** Problème 2 **
Pas besoin de sélectionner pour copier !
Exemple d'un classeur à un autre :

[[Classeur1]Feuil2!A1] = [[Classeur2]Feuil2!A1]

AV

Avatar
Philippe DROUET
MichDenis a formulé la demande :
Bonsoir Philippe,

Tu peux essayer ceci :

Cette procédure fait une vérification seulement pour les 2 derniers
caractères de chaque cellule

à toi de déterminer le nom de la feuille et la plage de cellules concernées.

'------------------------------
Sub Italique()

Dim Rg As Range
Dim C As Range

With Worksheets("Feuil1")
Set Rg = .Range("A1:A5")
End With

For Each C In Rg
For a = 1 To 2
With C.Characters(Len(C), 1)
If .Font.Italic = True Then
C = Left(C, Len(C))
End If
End With
Next
Next
Set Rg = Nothing: Set C = Nothing
End Sub
'-----------------------------


Salutations!


"Philippe DROUET" a écrit dans le message de
news: Bonjour à tous,
Voici mon premier problème.
Dans certaines cellules d'un tableau excel j'ais des noms suivis d'une
(ou deux) lettres en italique.
Ex : DURANT w <- le w en italique mais le début en normal

Comment par macro ou VBA supprimer cette (ou ces lettres) en italique
pour me retrouver uniquement avec le nom sans espace ni lettres
italiques.
Petite précision, certain noms sont des noms composés avec des espace
(que je ne veux bien sur pas supprimer !).

J'ai bien essayé avec queques fonctions de chaine, mais je n'y suis pas
arrivé :-(

Mon deuxième problème est je pense plus simple :
Lors d'un copier / coller entre deux documents avec les commandes
suivantes
Range("A1:C500").select
selection.copy
ensuite je colle dans l'autre document avec la commde pastespecial
uniquement les valeurs

je retrouve les liaisons dans le deuxième document !
Je souhaiterais ne retrouver que les valeurs !
comment faire ?

Merci d'avance.


Merci bien, je vais tester ça demain au boulot.

cordialement

Avatar
Philippe DROUET
** Problème 1 **
J'ai bien essayé avec queques fonctions de chaine, mais je n'y suis pas
arrivé :-(


Matricielle (validation par ctrl+maj+entrée) :
=GAUCHE(A1;EQUIV(VRAI;CODE(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1))>96;0)-2)

Je souhaiterais ne retrouver que les valeurs !


** Problème 2 **
Pas besoin de sélectionner pour copier !
Exemple d'un classeur à un autre :

[[Classeur1]Feuil2!A1] = [[Classeur2]Feuil2!A1]

AV


Bonsoir,
Je ne savais pas que l'on pouvais mettre ça entre crochets.
Bon ben je vais essayer ça demain aussi au boulot.
Merci encore.

cordialement.


Avatar
Philippe DROUET
Philippe DROUET a formulé ce jeudi :
** Problème 1 **
J'ai bien essayé avec queques fonctions de chaine, mais je n'y suis pas
arrivé :-(


Matricielle (validation par ctrl+maj+entrée) :
=GAUCHE(A1;EQUIV(VRAI;CODE(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1))>96;0)-2)

Je souhaiterais ne retrouver que les valeurs !


** Problème 2 **
Pas besoin de sélectionner pour copier !
Exemple d'un classeur à un autre :

[[Classeur1]Feuil2!A1] = [[Classeur2]Feuil2!A1]

AV


Bonsoir,
Je ne savais pas que l'on pouvais mettre ça entre crochets.
Bon ben je vais essayer ça demain aussi au boulot.
Merci encore.

cordialement.


Re bonsoir
Je viens de tester sur quelques lignes la formule suivante :
=GAUCHE(A1;EQUIV(VRAI;CODE(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1))>96;0)-2)

elle fonctionne bien mais tant que l'intéressé ne saisi pas les
dernières lettres en majuscule car sinon j'ai une erreur #N/A

Merci.



Avatar
AV
elle fonctionne bien mais tant que l'intéressé ne saisi pas les
dernières lettres en majuscule car sinon j'ai une erreur #N/A


Ben ...évidemment mais c'était pas évident dans ta question initiale !
En faisant donc une extraction en fonction de la position de la 1° lettre en
italique (il en faut au moins une) :
Fonction perso à mettre dans un module ordinaire :

Function ZZZ(c)
For i = 1 To Len(c)
If c.Characters(i, 1).Font.FontStyle _
= "Italique" Then Exit For
Next
ZZZ = Left(c, i - 2)
End Function

PS : Merci d'écrire tes réponses en tête de message !
C'est la coutume ici et ... on y tient
AV

Avatar
Philippe DROUET
AV avait énoncé :
elle fonctionne bien mais tant que l'intéressé ne saisi pas les
dernières lettres en majuscule car sinon j'ai une erreur #N/A


Ben ...évidemment mais c'était pas évident dans ta question initiale !
En faisant donc une extraction en fonction de la position de la 1° lettre en
italique (il en faut au moins une) :
Fonction perso à mettre dans un module ordinaire :

Function ZZZ(c)
For i = 1 To Len(c)
If c.Characters(i, 1).Font.FontStyle _
= "Italique" Then Exit For
Next
ZZZ = Left(c, i - 2)
End Function

PS : Merci d'écrire tes réponses en tête de message !
C'est la coutume ici et ... on y tient
AV


Désolé si je n'ai pas été asser précis dans ma première question.
Cette fois ça fonctionne à merveille :D
Merci millllllllle fois, c'est génial et ça va m'éviter de très longues
minutes de vérification et de suppression de ces saletés de lettres en
italique qui n'avait rien à faire là.

encore merci.