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

Si...

XLDnaute Barbatruc
Bonjour

Une autre façon de voir les "chôses" ... : formulaire ouvert à l'ouverture du fichier et relancé par Ctrl r en cas de fermeture abusive. On peut rajouter des cas mais il faudra faire attention aux noms des nouvelles étiquettes. On peut aussi stopper la bouble de recherche.
On peut encore ajouter des couleurs mais en compliquant la programmation.

Nota : pour l'instant les corrections sont enregistrées à côté pour les visualiser sinon de mauvaises corrections ne seront plus détectées et le petit Chöse risque d'être déçu ;) !

Au revoir
 

Pièces jointes

  • Accentuer.xlsm
    53.4 KB · Affichages: 41

jdawson

XLDnaute Junior
excuse moi que ne comprend tu pas .. je programme pas tout de a à z .. juste de macro dans des modules vierges que je racroche à mon onglet personnel en y accrochant un icone d excel pris au hasard ..
bon dis moi et je fais court a chaque fois
merci
 

jdawson

XLDnaute Junior
bonjour si alors ..

ton code marche bien aussi dans le fichier xlsm mais dans le fichier client que j ouvre avec me milliers ligne là je sèche ..

je crois que je vais arreter de vous demander car je vais me faire tuer, .. on est pas du meme niveau et je vous embrouille .. on fait pas les choses de la meme manière .. vous vous encapsulez tout dans un xlsm que je sais pas utiliser dès que j ouvre un fichier client avec mes millier de noms.. comme je disais je suis très debutant vis a vis de vous mais j ai mis tout mes code macros dans des modules vba que j ai enregistré et après je suis aller modifier chaque fois mon ruban pour y glissser a la souris ma macros et y coller un pti logo a la c.. pour faire joli.. comme cela dan mon ruban personnalise dans mon onglet marcro routage j ai 9 petit iconnes qui lance des marcros mais je programme ni le ruban ni l onglet ni les boutons .. c est basique mais ca marche

si je me fait mal comprendre exccusez mon inexpérience je ne en voudrais pas de ne pas me repondre :)

actuellement voila ma macro

Sub EDILAIX()
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

je voulais juste raccrocher a cela la solution a JOB75 avec sa list box et le fait que ca corrige au fur et a mesure .. la macro ci dessus repere et colorie en jaune les cellules avec ? ..; je voudrais la solution job75 avec la list box juste derrière pour finir le boulot ..
mais peut etre que c est pas possible .. si je devais choisir entre vous deux la solution de job75 correspond en tout point a ce que je veux avec la possibilite de modifier la liste des lettres proposées..

merci de m avoir lu :)
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour jdawson, le forum,

D'après ce que j'ai compris ce fichier (3) devrait vous satisfaire complètement.

J'ai introduit les macros MFC et Recherche :
Code:
Dim maj% 'mémorise la variable

Sub MFC()
'se lance par Ctrl+M
Application.ScreenUpdating = False
Cells.FormatConditions.Delete 'RAZ
Range("A1", Me.UsedRange).Select
Selection.FormatConditions.Add xlExpression, Formula1:="=TROUVE(""?"";A1)" 'pour version française
Selection.FormatConditions(1).Interior.ColorIndex = 6 'jaune
Application.Goto [A1], True 'cadrage
End Sub

Sub Recherche()
'se lance par Ctrl+R
Dim r As Range
Set r = Cells.Find("~?", ActiveCell, xlValues, xlPart)
If r Is Nothing Then MsgBox "Aucun ""?"" trouvé...": Exit Sub
r.Select 'sélectionne la cellule trouvée
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim t$, i%
t = "aceinouy" 'liste des caractères de remplacement
With ListBox1
  .Visible = False
  If InStr(ActiveCell, "?") Then
    .Clear
    For i = 1 To Len(t): .AddItem Mid(t, i, 1): Next 'crée la liste
    .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
Tout ce code doit être impérativement dans le code de la feuille et il ne fonctionnera que sur cette feuille.

Si vous voulez traiter un autre fichier importez ses données par simple copier/coller.

Bonne journée.
 

Pièces jointes

  • Accents(3).xlsm
    41.9 KB · Affichages: 47
Dernière édition:

job75

XLDnaute Barbatruc
Re,

Fichier (4) pour vraiment mâcher le boulot de l'utilisateur avec ces 2 macros :
Code:
Sub Importer()
'se lance par Ctrl+I
If ActiveWorkbook.Name = ThisWorkbook.Name And ActiveSheet.Name = Me.Name Then _
  MsgBox "Activez le fichier/la feuille source !", 48, "Importation": Exit Sub
Cells.Clear
ActiveSheet.Cells.Copy [A1]
[A1].Copy [A1] 'vide la mémoire
Application.Goto [A1]
End Sub

Sub Exporter()
'se lance par Ctrl+E
If ActiveWorkbook.Name = ThisWorkbook.Name And ActiveSheet.Name = Me.Name Then _
  MsgBox "Activez le fichier/la feuille de destination !", 48, "Exportation": Exit Sub
Dim tablo, ncol%, i&, j%
With ActiveSheet.Range("A1:A2", ActiveSheet.UsedRange) 'au moins 2 cellules
  tablo = .Formula 'matrice, plus rapide
  ncol = UBound(tablo, 2)
  For i = 1 To UBound(tablo)
    For j = 1 To ncol
      If Left(tablo(i, j), 1) <> "=" And InStr(tablo(i, j), "?") Then tablo(i, j) = Cells(i, j)
  Next j, i
  .Formula = tablo 'restitution
End With
End Sub
Edit : j'ai vérifié, si des cellules sont fusionnées il n'y a pas de problème.

A+
 

Pièces jointes

  • Accents(4).xlsm
    45 KB · Affichages: 35
Dernière édition:

job75

XLDnaute Barbatruc
Re,

Pour tester j'ai copié le tableau de la 2ème feuille (feuille source) jusqu'à la ligne 12 000.

Chez moi, sur Win 10 - Excel 2013, durées d'exécution :

- macro Importer => 0,14 seconde (le copier-coller est très rapide)

_ macro Exporter => 0,6 seconde (c'est encore rapide grâce au tableau VBA).

J'espère que vous suivez, il faut comprendre tous mes posts et tester tous mes fichiers...

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re,

Si l'on veut se fatiguer encore moins placer dans ThisWorkbook :
Code:
Private Sub Workbook_Open()
Application.OnKey "i", "Feuil1.Importer"
Application.OnKey "e", "Feuil1.Exporter"
Application.OnKey "m", "Feuil1.MFC"
Application.OnKey "r", "Feuil1.Recherche"
End Sub
Il n'y a plus besoin d'appuyer sur la touche Ctrl pour lancer les macros.

Fichier (5).

A+
 

Pièces jointes

  • Accents(5).xlsm
    46 KB · Affichages: 37

jdawson

XLDnaute Junior
bonjour job 75

merci pour tous vos post,
je ne suis pas au boulot pour tester tout cela en reel
ne m en veuillez pas si je reponds pas toujours rapido mais je fais ce travail macro pour les autres entre deux jobs, ce n est jamais ma priorite mais des que je peux je reprends cette tache,
quand je voyais mes collègues faire toujours les meme manip ca m a donne l idee de me lancer dans des choses simples au depart mais qui leur font gagner bcp de temps
je verrais donc tout cela

les operatrices ne sont pas "capable" si je puis dire d installer du vba et de faire cela tourner,
moi j ai pas forcement le temps de faire a leur place non plus
d ou le fait que parfois elle me demande si je peux leur faire cela, je regarde entre deux je copie le code vba dans un mail, je leur installe dans un module vba et je modifie le ruban pour qu en appuyants sur un icone ca ca les aide .. la le but est pas de tout faire mais qu au final elle puisse avoir le choix des lettres et faire les manip rapido en vue de faire le mailing.. vous l aurez compris si le fichier du client etait nickel rien de tout cela se serait ..
merci a vous job75
 

jdawson

XLDnaute Junior
job75

j ai copie ton code 3 pour commencer dans un feuille vierge excell avec prise en charge macro
dans une autre feuille j ai tape des cellules avec mauvais accent et j ai fait un copie colle sur la feuille vierge excell pour voir

ca me fait une erreur d execution 424 objet requis et quand je fais debogage la ligne visible =false est en jaune dans la macro private sub worksheet

je pense que quand tu dis d enregistre le code pour cette feuille et seulement elle c est au sujet des private worksheet, la mfc et la recherche sont de macros qui ne s attachent pas a une feuille en particulier si je ne me trompe alors excuse ma question mais pourquoi est on oblige de passer par les private ? j essaie de comprendre ..

j ai pas tester les 4 et 5 je le ferait sur le pc boulot

merci
 

jdawson

XLDnaute Junior
job75

je precise que ton fichier 3 marche en fait je suis parti de ton fichier 3 que j ai vide pour avoir une feuille vierge que j ai appele du nom du client
c est sur ce fichier que je copie après les donnée client avec les ? et ca marche nickel crhome

en theorie on aurait pas besoin de ctrl m et ctrl r pour declencher les macro elle pourrait se faire d office ce serait bien.. en faisant mon fichier perso j ai mis mes lettres que je veux AEIOUC et c est super
quand je colle le texte la mfc se fait direct sans ctrl et le reste aussi

le seul truc comme je le disait avant c est que la fille doit ouvrir son fichier client recu par mail et faire un copier coller dans la feuille xlsm vierge avec code que j aurais mis sur le bureau,
après la question que je me pose est aura t elle aussi les macros basique que j ai fait car au moins deux sont sur 100% des fichiers,
c est pour cela que je te parlais de lancer ta procedure en la racrochant au ruban comme je fais et donc peut etre pas avec des private sheet etc.. le principe est de ne pas lancer les macros sur tous les fihiers ouvert : un exemple bidon si je fais une macro pour dire que A est remplace par B pour un client et que pour un autre A devient D il me fallait deux marcros separes et tu laisse le choix a l operateur je t enverai ma barre de macros lundi pour que tu vois ce qu elle ont sous les yeux



merci encore de ta patience je reviens vers toi
 
Dernière édition:

job75

XLDnaute Barbatruc
Re,

Ecoutez il est inutile de vous casser la tête, vous n'avez rien à faire, ne touchez à rien.

Utilisez, vous et vos collaborateurs, le fichier joint où j'ai ajouté une Aide (touche F1).

Testez-le en important les données avec "?" d'un autre fichier (sans macros).

A+
 

Pièces jointes

  • Fichier définitif(1).xlsm
    73.6 KB · Affichages: 32
  • Source.xlsx
    15.1 KB · Affichages: 38

jdawson

XLDnaute Junior
bonsoir job75

ok je verra pour rajouter demain matin
j ai voulu mettre comme liste AEIOUC simplement car vous en aviez plus,
d une part la fenetre de la liste box ne s adapte pas a la longeur de la liste, j ai meme essaye avec au moins dix lettre et la ca va plus du tout,
ou faudrait il que je modifie qq chose pour adapter la longeur
et
je sais pas si d ailleur ca vient de la (de mettre que 3 5 6 lettre dans la box mais quand je met AEIOUC (C pour ç de françois par ex), j ai parfois pas la bonne lettre en remplacement c est embettant si tu pense par remplacer par un O et ca fait un U... j etais content de moi mais ca a l air de flotter si tu te contente de rajouter ou d enlever dans la liste entre ""

bonne soiree a toi
 

Discussions similaires

Réponses
9
Affichages
414

Statistiques des forums

Discussions
312 232
Messages
2 086 459
Membres
103 219
dernier inscrit
Akyrah