Onglets et MsgBox

  • Initiateur de la discussion evelyne
  • Date de début
E

evelyne

Guest
Bonjour à tout le Forum
Un petit probleme de plus !

Cette macro ,ci-dessous me permet de saisir le nom d'une personne dans une MsgBox et d'ouvrir l'onglet correspondant à ce nom (chaque onglets et nominativement nommés ,évidement).

Ma question est la suivante : Est -il possible de ne saisir que les quatre premières lettre des noms est avoir malgrés tout accés aux onglets .
ex : saisie (gran) pour l'onglet nommé grandjeanlegros


Private Sub SélectionDuNom()
Dim REPONSE As String
réponse = InputBox(" Entrer le nom de l'agent recherché .", " SÉLECTION D'UN AGENT.", "dupont par default")
Sheets("BLC").Range("a2").Value = réponse
If Target <> Sheets("BLC").Range("A2") Then
lenom = Sheets("BLC").Range("A2").Value
On Error Resume Next
Sheets(lenom).Select
If Err <> 0 Then
MsgBox "Cet agent n' existe pas !" & Chr(10) & "ou est mal orthographié .", vbCritical, " ERREUR DE SAISIE !"
Range("b12").Select
End If
End If
End Sub

je vous remercie d'avance pour toutes vos sujétions
Evelyne
 
@

@+Thierry

Guest
Bonjour Evelyne, le Forum

Voici un code qui fera :

1) Le tour par boucle de toutes les noms de feuilles (onglets)
2) Vérifiera si au moins un onglet corresponds à la String tapée dans l'input box.
3) L'Input box ne nécessite pas de taper 4 caractères... On peut taper le nombre des premiers caractères que l'on veut, la partie 2 se charge d'analyser...
4) En cas de Matching unique l'onglet sera sélectionné.
5) En cas de non Matching un message sera affiché
6) En cas de plusieurs Matchings un message sera affiché

Le code :
Option Explicit

Sub SelectSheet()
Dim Feuille As String
Dim Longueur As Byte
Dim I As Byte
Dim Hit As Byte
Dim Miss As Byte


Feuille = InputBox("Entrer le nom de l'agent recherché .", " SÉLECTION D'UN AGENT.", "Pas de Minimum de Caractère")

Longueur = Len(Feuille)

For I = 1 To Sheets.Count
If UCase(Left(Sheets(I).Name, Longueur)) = UCase(Feuille) Then
Sheets(I).Select
Hit = Hit + 1
Else
Miss = Miss + 1
End If
Next I
If Miss = Sheets.Count Then
MsgBox "Pas d'Agent dont le nom commence par : " & Feuille
End If
If Hit > 1 Then
MsgBox "Attention, au moins deux noms d'Agent commence par : " & Feuille
End If
End Sub

Voilà si celà peut convenir, sinon il faudrait peut-être songer à le faire par UserForm avec une ComboBox au lieu d'une simple InputBox...

Mais déjà essaie déjà ceci...

Bonne Journée
@+Thierry
 
P

Popeye

Guest
Bonjour le forum
j'espere que cela pourra t'aider
Je vais voir pour le probleme de majuscules et aussi pour faire une liste déroulante pour choisir si ya plusieurs feuilles qui commencent pas la meme chose

Sub pouet()
Dim lafeuille As Worksheet
Nom = InputBox("Quel nom?(Attention, il faut respecter les majuscules)", "Demande du nom")
For Each lafeuille In Worksheets
If Left(lafeuille.Name, Len(Nom)) = Nom Then
lafeuille.Activate
Exit Sub
End If
Next
MsgBox "Désolé aucune feuille ne correspont à votre demande"
End Sub
 
E

evelyne

Guest
merci @thierry@
c'est exactement ça
Ca vas au poil , je te remercis beaucoup
tu as vu que popeye n'est pas loin non plus
il faut qu'il utilise UCase pour le prob des majuscules
ok popeye !!
merci à toi également pour t'être penché sur mon prob et me donner ta soluce
a bientot
evelyne
 
@

@+Thierry

Guest
Hello Popeye, Re Evelyne

Oui c'est exact le Ucase peut être pratique pour les différence de "Casse" ... Sinon une autre astuce ...

En Top du Module :

Option Compare Text

avec Option Explicit...
Et le Tour est Joué !

Bon ben bon Appétit
@+Thierry
 
E

evelyne

Guest
bonjour @+thierry

tout fonctionne à merveille
sauf que j'ai des feuils masquées
et ça bogue sur elles ,puis-ce qu'elle ne sont pas affichable.
j'ai contournais le probleme en les renommant de deux Y avant leur nom : "yynomdelafeuilmasquée"
il est peu probable à mon avis de trouver qq qui se nomme yygikjtui..;
quoi que...
Prob:

1)si je ne saisis rien dans la MsgBox:
la macro cherche , et bloque sur les feuils masquées !!!

2)idem si je fais annuler !

Voyez-vous une soluce .

merci de vous pencher sur mon soucis
et bonne journée à vous

je recolle ci-dessous la macro:
Option Explicit

sub quelquechosede@+thierry()
Dim Feuille As String
Dim Longueur As Byte
Dim I As Byte
Dim Hit As Byte
Dim Miss As Byte

Feuille = InputBox("Entrer le NOM de l'agent recherché ;" & Chr(13) & "ou ses 3 premières lettres .", " SÉLECTION D'UN AGENT.", "Saisir au moins 3 Caractères !")
Longueur = Len(Feuille)
For I = 1 To Sheets.Count
If UCase(Left(Sheets(I).Name, Longueur)) = UCase(Feuille) Then
Sheets(I).Select
Hit = Hit + 1
Else
Miss = Miss + 1
End If
Next I
If Miss = Sheets.Count Then
MsgBox "Pas d'agent dont le nom commence par : [ " & Feuille & " ]", vbCritical, " Inconnu ."
End If
If Hit > 1 Then
MsgBox "Attention, au moins 2 noms d'agent commence par : [ " & Feuille & " ]", vbInformation, " Saisir un caractère supplémentaire ."
End If
End Sub
 
P

Popeye

Guest
Bonjour
Thierry doit etre en vacances je crois (le veinard)
Donc je vais essayer de t'aider
essaie comme ca pour voir
Apres on corrigera le tir si tu veux autre chose

Option Explicit

sub quelquechosede@+thierry()
Dim Feuille As String
Dim Longueur As Byte
Dim I As Byte
Dim Hit As Byte
Dim Miss As Byte

Feuille = InputBox("Entrer le NOM de l'agent recherché ;" & Chr(13) & "ou ses 3 premières lettres .", " SÉLECTION D'UN AGENT.", "Saisir au moins 3 Caractères !")

if feuille<>"" then 'si tu ne met riens ou si tu appuies sur annuler rien ne se passe

Longueur = Len(Feuille)
For I = 1 To Sheets.Count
If UCase(Left(Sheets(I).Name, Longueur)) = UCase(Feuille) Then
if sheets(I).visible=1 then
Sheets(I).Select
else
Msgbox "Une feuille correspond à votre requète mais celle ci est cachée"
End If

Hit = Hit + 1
Else
Miss = Miss + 1
End If
Next I
If Miss = Sheets.Count Then
MsgBox "Pas d'agent dont le nom commence par : [ " & Feuille & " ]", vbCritical, " Inconnu ."
End If
If Hit > 1 Then
MsgBox "Attention, au moins 2 noms d'agent commence par : [ " & Feuille & " ]", vbInformation, " Saisir un caractère supplémentaire ."
End If

End If

End Sub
 

Discussions similaires

Réponses
2
Affichages
154

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
314 655
Messages
2 111 604
Membres
111 217
dernier inscrit
aladinkabeya2