Prendre en compte les mots quelle que soit la casse
Résolu
Nai
Messages postés
714
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
Bonsoir tout le monde,
Je souhaite qu'une macro (à priori ListBox1_Click) m'affiche les noms commençant par la lettre tapée par l'utilisateur quel que soit la casse.
Explications suivie du fichier :
Lorsque j'ouvre le classeur, une macro (Workbook_Open) va récupéré les informations des colonnes A, B et C.
Puis, lorsque je clique sur une textbox, et que je tape la lettre M, par exemple, Excel m'affiche les lignes dans lesquelles on pouvait trouver cette lettre dans la colonne A.
Enfin, normalement.
Si, par malheur, le texte de la colonne A du fichier bdd.xlsx est écrit en minuscule, alors, la listbox considère qu'il n'y a rien... Dommage.
Il y a, je pense, deux possibilités :
- Soit faire en sorte que les Macros (je ne sais pas laquelle ne prend pas en compte les cellules en minuscule) prennent en compte les cellules quelle que soit la casse.
- Soit faire en sorte que le texte de la colonne A du fichier bdd se transforme en majuscule.
J'ai une nette préférence pour la première solution, qui permettrait à l'utilisateur d'utiliser sa propre base de donnée, et de réunir les macros dans un seul fichier.
Qu'en pensez-vous ? Et comment faire ?
https://www.cjoint.com/c/DJoweGL2FKI
Bien à vous,
Naï
ps: je surveille tous mes sujets non résolus, si solution vous avez, je la lirais à coup sûr :)
Je souhaite qu'une macro (à priori ListBox1_Click) m'affiche les noms commençant par la lettre tapée par l'utilisateur quel que soit la casse.
Explications suivie du fichier :
Lorsque j'ouvre le classeur, une macro (Workbook_Open) va récupéré les informations des colonnes A, B et C.
Puis, lorsque je clique sur une textbox, et que je tape la lettre M, par exemple, Excel m'affiche les lignes dans lesquelles on pouvait trouver cette lettre dans la colonne A.
Enfin, normalement.
Si, par malheur, le texte de la colonne A du fichier bdd.xlsx est écrit en minuscule, alors, la listbox considère qu'il n'y a rien... Dommage.
Il y a, je pense, deux possibilités :
- Soit faire en sorte que les Macros (je ne sais pas laquelle ne prend pas en compte les cellules en minuscule) prennent en compte les cellules quelle que soit la casse.
- Soit faire en sorte que le texte de la colonne A du fichier bdd se transforme en majuscule.
J'ai une nette préférence pour la première solution, qui permettrait à l'utilisateur d'utiliser sa propre base de donnée, et de réunir les macros dans un seul fichier.
Qu'en pensez-vous ? Et comment faire ?
https://www.cjoint.com/c/DJoweGL2FKI
Bien à vous,
Naï
ps: je surveille tous mes sujets non résolus, si solution vous avez, je la lirais à coup sûr :)
A voir également:
- Prendre en compte les mots quelle que soit la casse
- Créer un compte google - Guide
- Installer windows 10 sans compte microsoft - Guide
- Comment créer un compte gmail - Guide
- Comment savoir qui regarde mon compte facebook - Guide
- Créer un compte instagram sur google - Guide
2 réponses
Bonjour,
Peut être simplement en ajoutant UCase().
Ta procédure TextBox1_Change :
Devient :
Peut être simplement en ajoutant UCase().
Ta procédure TextBox1_Change :
Private Sub TextBox1_Change() 'sources : 'http://www.commentcamarche.net/forum/affich-14847865-recherche-semi-auto-dans-excel 'michel_m Application.ScreenUpdating = False 'ne pas afficher le déroulé de la macro' Dim lettre As String, cptr As Long, cptr_tablo As Long, derlig As Long, i As Long Dim Tb() lettre = UCase(TextBox1.Value) If lettre = "" Then Exit Sub For cptr = 1 To UBound(Sources, 1) If Sources(cptr, 1) Like lettre & "*" Then ' <== Ligne à modifier ReDim Preserve Tb(cptr_tablo) Tb(cptr_tablo) = Sources(cptr, 1) & " - " & Sources(cptr, 2) & " - " & Sources(cptr, 3) cptr_tablo = cptr_tablo + 1 End If Next If cptr_tablo = 0 Then MsgBox "Aucun Nom commençant par : " & lettre: Exit Sub With ListBox1 .Clear For i = LBound(Tb) To UBound(Tb) .AddItem Tb(i) Next .Visible = True End With Application.ScreenUpdating = True 'afficher le résultat final' End Sub
Devient :
Private Sub TextBox1_Change() 'sources : 'http://www.commentcamarche.net/forum/affich-14847865-recherche-semi-auto-dans-excel 'michel_m Application.ScreenUpdating = False 'ne pas afficher le déroulé de la macro' Dim lettre As String, cptr As Long, cptr_tablo As Long, derlig As Long, i As Long Dim Tb() lettre = UCase(TextBox1.Value) If lettre = "" Then Exit Sub For cptr = 1 To UBound(Sources, 1) If UCase(Sources(cptr, 1)) Like lettre & "*" Then '<== utilisation de UCase ReDim Preserve Tb(cptr_tablo) Tb(cptr_tablo) = Sources(cptr, 1) & " - " & Sources(cptr, 2) & " - " & Sources(cptr, 3) cptr_tablo = cptr_tablo + 1 End If Next If cptr_tablo = 0 Then MsgBox "Aucun Nom commençant par : " & lettre: Exit Sub With ListBox1 .Clear For i = LBound(Tb) To UBound(Tb) .AddItem Tb(i) Next .Visible = True End With Application.ScreenUpdating = True 'afficher le résultat final' End Sub
Merci !
Ça fonctionne ! U = Upper, c'est ça ?
Ça fonctionne ! U = Upper, c'est ça ?
Ben ça tu peux le faire en dehors d'une macro...
Tu te met dans une colonne vide de ton fichier même page,
En colonne Z par exemple,
en Z1 tu écris la formule : =MAJUSCULE(A1)
Formule que tu "étires" vers le bas.
Puis, copier / collage spécial choix valeurs de la colonne Z en colonne A...
En trois minutes tu n'as que des NOMS
Tu te met dans une colonne vide de ton fichier même page,
En colonne Z par exemple,
en Z1 tu écris la formule : =MAJUSCULE(A1)
Formule que tu "étires" vers le bas.
Puis, copier / collage spécial choix valeurs de la colonne Z en colonne A...
En trois minutes tu n'as que des NOMS
J'avais déjà fait ça, mais ça ne fonctionne pas.
Les fichiers concernés sont les mêmes qu'ici : https://forums.commentcamarche.net/forum/affich-30645995-completer-lignes-depuis-autre-classeur-base-de-donnees#28
Les fichiers concernés sont les mêmes qu'ici : https://forums.commentcamarche.net/forum/affich-30645995-completer-lignes-depuis-autre-classeur-base-de-donnees#28
J'avais déjà fait ça, mais ça ne fonctionne pas.
J'ai testé cela fonctionne...
Bon. Par macro, il va falloir modifier le fichier bdd.xlsx qui devient bdd.xlsm
Donc :
MODIFIER ce nom dans les macros du second fichier.
Puis, dans le fichier bdd.xlsm, ajouter cette macro dans le module ThisWorkbook
J'ai testé cela fonctionne...
Bon. Par macro, il va falloir modifier le fichier bdd.xlsx qui devient bdd.xlsm
Donc :
MODIFIER ce nom dans les macros du second fichier.
Puis, dans le fichier bdd.xlsm, ajouter cette macro dans le module ThisWorkbook
Private Sub Workbook_Open() Dim lig As Long, dl As Long With Sheets("Feuil1") dl = .Range("A" & Rows.Count).End(xlUp).Row For lig = 2 To dl .Cells(lig, 1) = UCase(.Cells(lig, 1)) Next End With End Sub