Frm de recherche VBA (userform)
Nounou1902
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
bonjour à tous,
Je me permet de poster un message car depuis plusieurs jours je suis sur un colle et je ne comprend vraiment pas comment faire et c'est la fin de mon projet il ne me reste plus que ça.
La demande concerne la page intitulée "rapport d'expansion"
Pour quelqu'un qui connaît le VBA il n'y a pas grand chose a trouver mais pour moi ça me paraît impossible.
J'ai créer un formulaire de recherche (userform) j'ai relié toutes les plage comme vous pourrez le voir dans le fichier Excel ci-joint ou dans le code ci-dessous
Le formulaire fonctionne sauf quand je créer une nouvelle feuille qui est associé au bouton macro dont le code est ci dessous également et bien mon formulaire de recherche ce met à ne plus chercher dans la bonne colonnes.
Merci infiniment a celui qui trouvera ma colle.
Et si ce n'est pas trop demandé quel code pourrai-je introduire pour que quand le "numero de lot" n'existe pas il arrête de chercher à l'infini et me met un message d'erreur (le numero de lot n'existe pas)
Et vraiment sa c'est du plus le code pour pouvoir effacer avec la toucher effacer la case intitulé (LE NUMERO DE LOT)
Merci infiniment à celui qui arrivera à resoudre ce problème cela me permettrait de finaliser la réalisation de mon projet que je dois donné la semaine prochaine.
Voici le code du FRM de recherche :
Private Sub UserForm_Initialize()
Me.Message_lbl = "Veuillez inscrire le numéro de lot concernant la production à rechercher"
End Sub
Private Sub lenumerodelot_Change()
'se positionner'
Feuil3.Activate
Range("H5").Select
'on boucle tous les lots de la colonne H'
Do Until ActiveCell = CLng(Me.lenumerodelot)
ActiveCell.Offset(1, 0).Select
Loop
Me.lesdates = ActiveCell.Offset(0, -7)
Me.les_operateurs = ActiveCell.Offset(0, 21)
Me.qualiteprogramee = ActiveCell.Offset(0, -6)
Me.matierepremiere = ActiveCell.Offset(0, -4)
Me.laquantite = ActiveCell.Offset(0, -1)
Me.expansionunoudeux = ActiveCell.Offset(0, 1)
Me.expanseurlist = ActiveCell.Offset(0, 3)
Me.heurededebut = ActiveCell.Offset(0, 4)
Me.heuredefin = ActiveCell.Offset(0, 5)
End Sub
Private Sub btn_fermer_Click()
Unload Me
End Sub
Voici le code de la macro pour ouvrir une nouvelle feuille (car c'est pour être à prendre en considération) :
Sub NOUVELLE_FEUILLE_DE_PRODUCTION()
ActiveSheet.Unprotect
Range("A1:AE35").Copy
Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 40).Select
ActiveSheet.Paste
Range("B1:B3").ClearContents
Range("A5:N30").ClearContents
Range("E32:N34").ClearContents
ActiveWindow.Zoom = 55
Range("A1").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Et un photo pour ceux ou celle qui ne souhaite pas telecharger le fichier pour montrer sa composition :
Je me permet de poster un message car depuis plusieurs jours je suis sur un colle et je ne comprend vraiment pas comment faire et c'est la fin de mon projet il ne me reste plus que ça.
La demande concerne la page intitulée "rapport d'expansion"
Pour quelqu'un qui connaît le VBA il n'y a pas grand chose a trouver mais pour moi ça me paraît impossible.
J'ai créer un formulaire de recherche (userform) j'ai relié toutes les plage comme vous pourrez le voir dans le fichier Excel ci-joint ou dans le code ci-dessous
Le formulaire fonctionne sauf quand je créer une nouvelle feuille qui est associé au bouton macro dont le code est ci dessous également et bien mon formulaire de recherche ce met à ne plus chercher dans la bonne colonnes.
Merci infiniment a celui qui trouvera ma colle.
Et si ce n'est pas trop demandé quel code pourrai-je introduire pour que quand le "numero de lot" n'existe pas il arrête de chercher à l'infini et me met un message d'erreur (le numero de lot n'existe pas)
Et vraiment sa c'est du plus le code pour pouvoir effacer avec la toucher effacer la case intitulé (LE NUMERO DE LOT)
Merci infiniment à celui qui arrivera à resoudre ce problème cela me permettrait de finaliser la réalisation de mon projet que je dois donné la semaine prochaine.
Voici le code du FRM de recherche :
Private Sub UserForm_Initialize()
Me.Message_lbl = "Veuillez inscrire le numéro de lot concernant la production à rechercher"
End Sub
Private Sub lenumerodelot_Change()
'se positionner'
Feuil3.Activate
Range("H5").Select
'on boucle tous les lots de la colonne H'
Do Until ActiveCell = CLng(Me.lenumerodelot)
ActiveCell.Offset(1, 0).Select
Loop
Me.lesdates = ActiveCell.Offset(0, -7)
Me.les_operateurs = ActiveCell.Offset(0, 21)
Me.qualiteprogramee = ActiveCell.Offset(0, -6)
Me.matierepremiere = ActiveCell.Offset(0, -4)
Me.laquantite = ActiveCell.Offset(0, -1)
Me.expansionunoudeux = ActiveCell.Offset(0, 1)
Me.expanseurlist = ActiveCell.Offset(0, 3)
Me.heurededebut = ActiveCell.Offset(0, 4)
Me.heuredefin = ActiveCell.Offset(0, 5)
End Sub
Private Sub btn_fermer_Click()
Unload Me
End Sub
Voici le code de la macro pour ouvrir une nouvelle feuille (car c'est pour être à prendre en considération) :
Sub NOUVELLE_FEUILLE_DE_PRODUCTION()
ActiveSheet.Unprotect
Range("A1:AE35").Copy
Range("A" & Range("A" & Rows.Count).End(xlUp).Row + 40).Select
ActiveSheet.Paste
Range("B1:B3").ClearContents
Range("A5:N30").ClearContents
Range("E32:N34").ClearContents
ActiveWindow.Zoom = 55
Range("A1").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Et un photo pour ceux ou celle qui ne souhaite pas telecharger le fichier pour montrer sa composition :
A voir également:
- Frm de recherche VBA (userform)
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Recherche photo - Guide
- Je recherche une chanson - Guide
- Problème recherche de chaine tv thomson - Forum Téléviseurs
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, il est préférable d'éviter select et activate.
par ailleurs, pour éviter de chercher à l'infini, le mieux c'est de déterminer quand s'arreter. peut-être, par exemple, quand la cellule est vide?
ainsi:
par ailleurs, pour éviter de chercher à l'infini, le mieux c'est de déterminer quand s'arreter. peut-être, par exemple, quand la cellule est vide?
ainsi:
Private Sub lenumerodelot_Change() dim cl as range set cl= Feuil3.Range("H5") Do Until cl = "" if cl = CLng(Me.lenumerodelot) then Me.lesdates = cl.Offset(0, -7) ' ... Me.heuredefin = cl.Offset(0, 5) exit sub end if set cl=cl.Offset(1, 0) Loop msgbox "le numero de lot n'existe pas" end sub