probleme d'affichage dans un MsgBox

nikon72

XLDnaute Nouveau
salut le forum,

j essai d afficher dans une msgbox une cellule en fonction d une recherche, je m explique :

j ai un fichier excel original avec une colonne de code de designation et une colone de nom de personne.

chaque fois que je scan un code et qu il est trouver dans la colonne de designation, je voudrai faire ouvrir un msgbox quelque seconde pour voir le nom de la personne.

mais bon j suis pas tres douer :(

voila mon debut de code mais meme sa, c pas terible :(

Option Explicit
Option Compare Text
Dim DerliA As Integer, DerliB As Integer, Fin As Integer, I As Integer

Private Sub CommandButton1_Click()
Dim Fin As Integer, I As Integer
DerliA = Range("B6000").End(xlUp).Row
DerliB = Range("D8000").End(xlUp).Row
Fin = IIf(DerliA < DerliB, DerliA, DerliB)
For I = 2 To Fin
If Cells(I, 1).Value = TextBox2.Value And Cells(I, 2).Value = TextBox4.Value Then
MsgBox ("NOM DU CHAUFFEUR")
Me.TextBox2.SetFocus
Exit Sub
End If
Next
Cells(DerliA + 1, 1) = TextBox2.Value
Cells(DerliA + 1, 2) = TextBox4.Value
End Sub

quelqu un peu m aider?

merci
 

Excel-lent

XLDnaute Barbatruc
Re : probleme d'affichage dans un MsgBox

Bonsoir Nikon72

Faut pas désespérer!!! Ton code te plait peut-être pas, mais certaines parties montre que tu connais quelques astuces sympa, que peu de personnes connaissent et utilise!

Code:
Option Explicit
Option Compare Text
Dim DerliA As Integer, DerliB As Integer, Fin As Integer, I As Integer

Private Sub CommandButton1_Click()
  Dim Fin As Integer, I As Integer
  DerliA = Range("[COLOR="Blue"]B65536[/COLOR]").End(xlUp).Row
  DerliB = Range("[COLOR="Blue"]D65536[/COLOR]").End(xlUp).Row
  Fin = IIf(DerliA < DerliB, DerliA, DerliB)
  For I = 2 To Fin
        If Cells(I, 1).Value = TextBox2.Value And Cells(I, 2).Value = TextBox4.Value Then
            MsgBox "NOM DU CHAUFFEUR[COLOR="Green"][B] : " & Cells(I,2)[/B][/COLOR]
            Me.TextBox2.SetFocus
            Exit Sub
        End If
    Next [COLOR="Red"]I[/COLOR]
    Cells(DerliA + 1, 1) = TextBox2.Value
    Cells(DerliA + 1, 2) = TextBox4.Value
End Sub

On part généralement de la dernière ligne d'une feuille excel! J'ai mis 65536, car il s'agit de la dernière ligne. Sous Excel 2003, une feuille excel comporte 65536 lignes. A adapter selon ta version d'Excel.

I : en effet, certains omettent de le mettre, mais si tu le mets, tu gagne au moins en clarté!

Sans le fichier, difficile d'être sûr à 100% Mais si j'ai bien compris ton explication, cette partie devrait répondre à ta question

Pour information, puisque tu semble aimer le code compact, tu peux remplacer :
Code:
Range("B65536").End(xlUp).Row
par :
Code:
[B65536].End(xlUp).Row

qui signifie la même chose.

Si ma réponse te convient pas, merci de joindre ton fichier avec :
-> la macro
-> ton tableau avec la colonne "Code" et la colonne "Nom"

A te lire.

Edition : Bonsoir Hulk, Kjin
 
Dernière édition:

nikon72

XLDnaute Nouveau
Re : probleme d'affichage dans un MsgBox

Salut a vous,

deja merci pour vos reponses :)

j ai rajouté le popup (qui est d ailleur bien plus pratique!!!)

mais ca bug toujours cher moi :(

j ai pas bcp de merite pour le code, je suis bcp sur le forum ;)

je rajoute mon fichier, mais je programme dans le CommandButton1,
je n ai pas faisde Macro, c est pas ma tasse de thé!

si vous savez eclairer ma lanterne...

merci pour votre aide
 

Pièces jointes

  • chauffeur.xls
    38 KB · Affichages: 107

Hulk

XLDnaute Barbatruc
Re : probleme d'affichage dans un MsgBox

Hello,

Ce n’est plus vraiment le même sujet, mais bon.

Sauf erreur de ma part, lorsque tu utilises depuis une feuille des TextBox ou autres d’un USF, tu dois indiquer que les TexBox sont dans l’USF -> UserForm1.TextBox2.Value

Bref ton code doit donner quelque chose comme ça
Code:
Option Explicit
Option Compare Text
Dim DerliA As Integer, DerliB As Integer, Fin As Integer, I As Integer
Private Sub CommandButton1_Click()
Dim Fin As Integer, I As Integer
DerliA = Sheets("ORIGINAL").[C65536].End(xlUp).Row
DerliB = Sheets("ORIGINAL").[D65536].End(xlUp).Row
Fin = IIf(DerliA < DerliB, DerliA, DerliB)
For I = 2 To Fin
If Cells(I, 1).Value = UserForm1.TextBox2.Value And Cells(I, 2).Value = UserForm1.TextBox4.Value Then
''MsgBox = Sheets("ORIGINAL").[A65536].Value
[COLOR="Red"][B]CreateObject("Wscript.shell").Popup UserForm1.TextBox3, 3,MsgBox = Sheets("ORIGINAL").[A65536].Value, vbInformation[/B][/COLOR]
UserForm1.TextBox2.SetFocus
UserForm1.TextBox4.SetFocus
Exit Sub
End If
Next I
Cells(DerliA + 1, 1) = UserForm1.TextBox2.Value
Cells(DerliA + 1, 2) = UserForm1.TextBox4.Value
End Sub
La phrase en rouge, je me demande... S'il y a encore erreur, peut-être la remplacer par
Code:
CreateObject("Wscript.shell").Popup UserForm1.TextBox3, 3, Sheets("ORIGINAL").[A65536].Value, vbInformation
Cdt, Hulk.
 

nikon72

XLDnaute Nouveau
Re : probleme d'affichage dans un MsgBox

Salut Hulk,

Desoles pour le changement, je m etais mal exprimer :s

tu as raison pour la nouvelle phrase de code l ancienne fait une erreur.

je me dis que sa serait peu etre plus simple sans l USF non?
je resterais sur la premiere feuille et je mettrais un popup a chaque scan...
mais alors, je dois faire une macro? ou je refais un bouton qui demarre l appli?
qu en penses-tu?

Merci :)
 

Hulk

XLDnaute Barbatruc
Re : probleme d'affichage dans un MsgBox

Re,

Ben si tu utilises l'USF, tu mets le code dans le bouton "Ok" de l'USF, et si tu l'utilises depuis la feuille, tu le places dans le code du bouton "Ok" de la feuille...

Ensuite je sais pas ce qui est le mieux, c'est à toi de décider ce qui te semble le plus sympa :D

Cdt, Hulk.
 

nikon72

XLDnaute Nouveau
Re : probleme d'affichage dans un MsgBox

Bonsoir tout le monde,
voila la suite,

j ai reecrit un commentaire normal, je me suis enmelé les pinceaux.....
et j ai remis le fichier en ligne.

alors le code ne bug pas, mais mon USF ne s ouvre pas, juste comme un popup... :confused:

encore un coup de main?? :eek:

merci
 

Pièces jointes

  • chauffeur 2.xls
    46.5 KB · Affichages: 81

kjin

XLDnaute Barbatruc
Re : probleme d'affichage dans un MsgBox

Bonsoir,
Je suis parti du principe que tu extrais les 7 derniers caratères d'un scan pour former un code
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cod As Long, C As Range
If Target.Column <> 1 Or Target.Row < 6 Or Target.Count > 1 Then Exit Sub
If Target <> "" Then
Cod = CLng(Right(Target, 7))
    With Sheets("ORIGINAL")
    Set C = .Range("D4:D" & .Range("D65000").End(xlUp).Row).Find(Cod)
        On Error Resume Next
        If C Is Nothing Or C.Offset(0, -3).Value = "" Then
            CreateObject("Wscript.shell").Popup "Aucun Nom correspondant", 1, "CHAUFFEUR"
        Else
            CreateObject("Wscript.shell").Popup C.Offset(0, -3), 1, "CHAUFFEUR"
        End If
    End With
End If

End Sub
A+
kjin
 

Pièces jointes

  • Nikon.zip
    11.5 KB · Affichages: 30
  • Nikon.zip
    11.5 KB · Affichages: 28
  • Nikon.zip
    11.5 KB · Affichages: 29

nikon72

XLDnaute Nouveau
Re : probleme d'affichage dans un MsgBox

Bonsoir Kjin,

ton code est nettement plus simple que moi :)

par contre quand j ai le nom d un chauffeur, le popup ne se ferme pas alors que si il n y a pas de chauffeur, le popup fonctionne et se ferme bien apres 1 seconde...

Sais tu aussi si on peu changer la police dans le popup?


merci

edit: autant pour moi, le popup fonctionne ;), sais tu juste pour la taille de la police, je vais chercher pour refuser les doublons...
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 338
Membres
103 191
dernier inscrit
camiux