visualisez des mauvais accents

jdawson

XLDnaute Junior
bonjour à tous

Une collègue a ce genre de problème d accent dans un fichier excell

comment puis je lui colloriser toute les cellules contenant le ? à la place du bon accent
je précise de suite que ce n est pas toujours la même lettre à substituer au ?

mon problème était de rechercher ce ? car si je me trompe pas c est un caractère joker sous excell

si on peut coloriser tous les ? du tableau excell ce serait cool aussi pourquoi pas
le fichier joint vous permet de suite de voir le problème

le code de la macro me serait agréable je ne suis que débutant et vous me permettez ainsi de comprendre le code pour la suite

merci par avance

bruno
 

Pièces jointes

  • TEST.xlsx
    8.9 KB · Affichages: 48

JHA

XLDnaute Barbatruc
Bonjour à tous,

Un essai par MFC
Code:
=CHERCHE("µ";SUBSTITUE(A1;CAR(63);"µ"))
Au lieu de car(63), tu peux aussi mettre cette formule:
Code:
=CHERCHE("µ";SUBSTITUE(A1;"?";"µ"))

JHA
 

Pièces jointes

  • TEST.xlsx
    9.4 KB · Affichages: 54
Dernière édition:

jdawson

XLDnaute Junior
Bonjour JHA

merci pour la rapidité !

j avais une macro avec un mfc qui coliorait en rouge les cellules depassant les 38 caractères

j ai changé juste la ligne de la formule formatCondition avec ta formule

mais ca fait une erreur quand je sauvegarde

en fait je ne voulais par remplacer le caractère ? mais déjà dans un premier temps mettre en couleurs les cellules le contenant .. du fait que le ? sert pour différents accent, libre a l operateur de mettre ce qu il veut la la place ... le but est d avoir une vue d ensemble rapide, après on paufinera si necessaire..

merci à toi

Sub bruno


With ActiveSheet.UsedRange
.Range("A1").Activate
'on commence par enlever toute couleur attribue à la celulle
.FormatConditions.Delete

.FormatConditions.Add Type:=xlExpression, Formula1:="=CHERCHE("µ";SUBSTITUE(A1;CAR(63);"µ"))"
'on attribue a ces cellules la couleur de fond rouge
.FormatConditions(1).Interior.ColorIndex = 39
End With

End Sub
 
Dernière édition:

jdawson

XLDnaute Junior
Bonjour

à l aide de la MFC qui suit je repère les mauvais accents symbolisé par ? et je colorie les cellules en contenant en jaune

Sub bruno()
Cells.Select
Range("A1").Activate
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=CHERCHE(""µ"";SUBSTITUE(A1;CAR(63);""µ""))"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = True
Range("A1").Select
ActiveWindow.SmallScroll Down:=72
End Sub

suite à cela est il possible que pour toute les cellules concernées (celle en jaunes) une petite liste déroulante contenant par exemple E, O, ou ' se mette pour la cellule afin que l opérateur choisisse la lettre qu il veut en remplacement du ?

attention il faudrait que dans l idéal en cliquant l opérateur ne change que le ? qu arrive en premier dans la cellules et que l opérateur puissent réitérer avec la liste pour le suivant de la cellules etc..

en effet si vous avez a changer J?R?ME il faut en premier un E et en second un O

cela aurait été bien plus simple bien sur si les ? représentaient toujours la même lettre

merci par avance
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

Substitue() te permet de remplacer le 1er,second ou autre caractère dans la cellule
Ci joint un exemple par formule.

JHA
 

Pièces jointes

  • MFC sur caractere spécial.xlsx
    10.3 KB · Affichages: 44

job75

XLDnaute Barbatruc
Bonjour jdownson, JHA,

Juste pour simplifier la formule de JHA :
Code:
=TROUVE("?";A1)
CHERCHE utilise en effet les caractères génériques "*" et "?" mais ce n'est pas le cas de TROUVE.

On peut aussi ajouter un tilde "~" :
Code:
=CHERCHE("~?";A1)
A+
 

job75

XLDnaute Barbatruc
Re,

Il n'y a pas besoin de VBA pour la MFC mais il en faut pour remplacer les "?" :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ListBox1
  .Visible = False
  .ListIndex = 0
  If InStr(ActiveCell, "?") Then
    .Top = ActiveCell.Top
    .Left = ActiveCell(1, 2).Left
    .Visible = True
  End If
End With
End Sub

Private Sub Listbox1_GotFocus()
ActiveCell = Replace(ActiveCell, "?", ListBox1, , 1)
ActiveCell.Activate 'enlève le focus
If InStr(ActiveCell, "?") = 0 Then Worksheet_SelectionChange ActiveCell
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Accents(1).xlsm
    29.8 KB · Affichages: 50

ROGER2327

XLDnaute Barbatruc
Bonjour à tous.

Une autre approche.
Bonne journée.

ℝOGER2327
#8506


Dimanche 8 Pédale 144 (La machine à inspirer l’amour - fête Suprême Tierce)
12 Ventôse An CCXXV, 0,7165h - orme
2017-W09-4T01:43:11Z
 

Pièces jointes

  • Signes diacritiques.xlsm
    24.7 KB · Affichages: 53

job75

XLDnaute Barbatruc
Bonjour Roger, le forum,

Plusieurs compléments.

Il est mieux de définir la liste de la ListBox par sa propriété .List.

Les caractères peuvent être des minuscules, on appuiera sur la touche Maj/Shift pour entrer une majuscule.

Enfin, très intéressant, on peut mettre en surbrillance le caractère survolé dans la ListBox :
Code:
Dim maj% 'mémorise la variable

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ListBox1
  .Visible = False
  If InStr(ActiveCell, "?") Then
    .Clear
    .List = [Accents].Value 'plage nommée
    .Top = ActiveCell.Top
    .Left = ActiveCell(1, 2).Left
    .Visible = True
  End If
End With
End Sub

Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
maj = Shift 'mémorisation
ListBox1.Selected(Int(Y * ListBox1.ListCount / ListBox1.Height)) = True 'mise en surbrillance du caractère
End Sub

Private Sub Listbox1_GotFocus()
ActiveCell = Replace(ActiveCell, "?", IIf(maj, UCase(ListBox1), ListBox1), , 1)
ActiveCell.Activate 'enlève le focus
If InStr(ActiveCell, "?") = 0 Then ListBox1.Visible = False
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Accents(2).xlsm
    32.6 KB · Affichages: 43
Dernière édition:

jdawson

XLDnaute Junior
rebonjour

je viens de tester le code de job75 et il répond parfaitement à ce que j attendais, le fait de choisir la bonne lettre jusqu'a que la cellule soit totalement corrigée sera d'une grande aide pour mes collègues

je vous precise que ce sont des fichiers clients de plusieurs milliers de lignes que nous traitons, avec des ajouts suppression reorganisation de colonnes etc .. ce que j ai fait pour l instant c est une serie de macros avec des boutons dont le noms corrections au client et au symptomes à traiter, pour des actions que mes collègues font inlassablement toutes les semaines. ma collègue ouvre un fichier client execute la macro bouton qui va bien et tout roule. voila le principe que j ai adopté

pour un client donc j ai ce problème d accent ? a regler et comme c est pas toujours la meme lettre a donner en correction la solution de job75 repond parfaitement

toutefois, ne m en veux pas job75 (j apprends grace à vous a faire des macros et les comprendre) mais il faut que je mette ta solution en boite dans une macro avec un bouton comme pour les autres cas..

mon but est que quand l operatrice ouvre le fichier de milier de noms et appuye sur la macro bouton cela enclenche ton code et la liste box avec le choix des lettres,
j ai bien copié dans un nouveau module ton code mais ca ne marche pas je dois louper une etape à mon avis.. une fois le code copie je met un point d honneur a le comprendre au mieux..

il faut que ton code par une macro bouton puisse s appliquer dès que l on a fichier qui presente la meme maladie avec pour moi la possiblite d ajouter une lettre ou plusieurs au choix dans la liste

peut tu me dire comment je dois m y prendre pour l incorporer en tant que nouvelle macro ?

je te remercie par avance

oups !! c est du mailing nous n'avons donc pas besoin des accent la liste box peut donc n avoir que des lettre sans accent..


je continue à lire les autres post :)
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour jdawson,
oups !! c est du mailing nous n'avons donc pas besoin des accent la liste box peut donc n avoir que des lettre sans accent..
Là je ne comprends pas, comment saura-t-on quel accent il faut mettre ???

Si vous voulez un bouton il suffit de remplacer la macro Worksheet_SelectionChange par celle du bouton (contrôle ActiveX), toujours dans le code de la feuille :
Code:
Private Sub CommandButton1_Click()
With ListBox1
  .Visible = False
  If InStr(ActiveCell, "?") Then
    .Clear
    .List = [Accents].Value 'plage nommée
    .Top = ActiveCell.Top
    .Left = ActiveCell(1, 2).Left
    .Visible = True
  End If
End With
End Sub
Mais de toute façon il faut sélectionner la cellule concernée, je ne vois donc vraiment pas l'intérêt d'un bouton !!!

A+
 

jdawson

XLDnaute Junior
bonjour job75

tout d abord je me suis mal exprimé, et comme je te l ai dis je suis novice encore en macro et en fichier xlsm comme tu m a donné,
excuse ma question car je ne sais pas m y prendre avec ton code..
quand ma collègue reçoit chaque semaine le fichier excell du client avec des milliers de nom, elle va l ouvrir et c est a ce moment la que la mfc et le reste du code doit se faire

toutefois comme je l expliquerai quelques soit le fichier client qu elle ouvre, elle ont le choix des boutons selon la macro qu elle veulent lancer sur ce fichier là .. par exemple une macro qui enlève les caractère parasites, un autre qui va déplacer telle colonne à une place bien précise etc.. afin qu au final le fichier soit conforme à un masque d entrée dans une base de donnée c est a cela que les macros que j ai fait servent, afin que le fichier soit au final comme elle le veulent .. mais selon les clients la macro est différentes (j en ai 9 actuellement pour 9 client "coriaces" lol

ah j'oubliais je sais c est pas bien ce que je fais pour des puriste comme vous mais jusqu'a la je met du code macro dans module vierge je l enregistre et après je modifie mon ruban, onglet personnalisé qui rassemble mes macro, pour y racrocher ma macro a un bouton (icone que je choisis au hasard) .. je ne crée pas le bouton par programmation comme vous .. c est pas ce que vous avez l habitude de faire mais je sais pas faire tout cela mdr .. je cree grace à vous des petites macros et après je modifie mon ruban en consequence à la souris ..

le travail dont on parle toi et moi fait une 10ième sorte de macro tu vois, je ne veux pas un boutons pour chaque fois changer d accent mais je pensais (je dis bien pensais) mettre cela dans un bouton (comme j ai fait avec la mfc initiale qui me colorie en jaune les cellules à corriger afin que ca me lance la reconnaissance des cellules en jaunes car présence de ?) et après donc l opératrice en cliquant comme tu le dis sur chaque cellules jaunes verrait donc grâce à ton code les 3 ou plus de lettre proposées et cliquerait sur la bonne à chaque fois .. ton code marche a merveille mais entre ton code et ta list box ou tu emmagasine les lettre proposées je voudrais proposer cette possibilité à chaque fois sur un fichier excell ouvert mais que cela ne se fasse pas tout seul car le fichier ouvert est peut etre celui d'un autre client donc il faut que l opérateur puisse décider elle même de la macro a lancer .. si ton code se lance pour tous les clients ca le fait pas...

j ai donc toutes me macros dans un classeur qui est sur leur bureau et a chaque fois que mes collègues lance un fichier client excell les macro y sont reliées et elle choisissent les macros a lancer en fonction du client lui meme.. tout cela se résume en disant que des fichier d adressage sont parfois très fouillis et mal ordonnées, c est pour cela que j ai fait une série de macros pour ne pas faire à chaque fois 3h de manip dans tel ou tel client.

d'ou ma question avec ton code que je ne sais pas ou placer .. avoir la possibilité d ajouter une ou deux lettre selon le cas .. En fait il me faut E, O C pour l instant car un mailing postal ne comprends pas d accent donc que le ? remplace un é è ê on veut à la place un E ca ira très bien .. j ai rien vu d autre mais je me mefie j ai pas trouvé de î remplacé par ? mais ca pourrait etre le cas..

voila exusez moi de la longeur mais le but est que quelque soit le fichier excell de mailing que la personne ouvre elle puisse lancer ou non tel ou tel code ..


merci à toi job75
 

Pièces jointes

  • test2.xls
    26 KB · Affichages: 40
Dernière édition:

Discussions similaires

Réponses
9
Affichages
550

Statistiques des forums

Discussions
312 932
Messages
2 093 733
Membres
105 802
dernier inscrit
Witchun