Affectation et suppression donnée textbox

Bonjour tout le monde,

Je me dirige vers vous pour une macro qui me résiste encore et toujours.

J’ai un userform qui me reporte ces données en fonction du choix d’un combobox et cela fonctionne nickel.

Le problème vient du textbox1, j’aimerai que celui-ci aille me récupérer une donnée dans la feuille « demande » et que cette donnée soit supprimé dans cette même feuille.

Le tout suivi d’un enregistrement automatique du fichier.

Le but étant d’éviter qu’une demande soit traité deux fois.

De ce fait à chaque fois que j’appelle le USF, j’ai une demande différente.

Si vous avez des idées ou des propositions, je suis preneur.

Hésitez pas à me dire si je n'ai pas été compréhensible

D’avance merci à tous pour votre aide et votre temps.

Vinno

7rubis-v4.xlsm (144.91 Ko)

Bonjour

Nouvelle version.

3rubis-v5.xlsm (141.34 Ko)

Si vous avez des idées ou des propositions,

* A la place du TextBox1, ne serait-il pas plus commode d'avoir un ComboBox qui se chargerait automatiquement des numéros qu'on a sur la lislte "Demande" ?

* Je ne vois pas trop l'intérêt d'enregistrer le fichier à chaque demande....

Bye !

Bonjour,

Petite question, pour utiliser un textbox pour récupérer le numéro de demande ? Et pourquoi le textbox est fixé sur A2 ?

Cependant, pour supprimer la donnée, j'ai ajouté le code ci-dessous dans la macro Userform_Initialize qui efface le numéro de demande en A2 à l'ouverture du USF :

Dim cel As String
On Error Resume Next
cel = Sheets("Demande").Range("A2:A" & Sheets("Demande").Range("A" & Rows.Count).End(xlUp).Row).Find(TextBox1.Value).Address
    If cel <> "" Then
        Sheets("Demande").Range(cel).Delete
    End If
ThisWorkbook.Save

Attention, si tu fermes le USF, le numéro de demande sera tout de même supprimé sans qu'il ait été traité !

C'est pourquoi tu peux rajouter ce code qui s'active lorsque tu cliques sur la croix rouge du USF. Celle-ci replace le numéro supprimé en A2 puis ferme l'USF.

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
    If MsgBox("voulez-vous vraiment quitter ?", vbYesNo, "Attention") = vbYes Then
        Sheets("Demande").Range("A2").EntireRow.Insert
        Sheets("Demande").Range("A2") = TextBox1.Value
        ThisWorkbook.Save
            Else
            'et si tu veux empêcher la fermeture
            Cancel = True
    End If
End If
End Sub

A plus !

PS : Du même avis que gmb, un ComboBox serait je pense plus adapté. Car avec ce TextBox, tu n'as pas le choix de la demande à traiter.

Merci à vous 2 pour le temps consacré.

@Gmb, ton code remplie parfaitement ton rôle

@Braters, je teste dés que possible et je te tiens au courant.

Ce n'est pas grave de ne pas avoir le choix de la demande à traiter. le but étant de les traiter à la suite

Merci à vous 2 en tout cas.

@Braters, il fonctionne parfaitement.

Encore un grand merci.

Egalement j'ai fait apparaitre un msgbox quand il n'y a plus de demande.

La boite de dialogue apparait mais après avoir cliqué sur OK le USF apparait.

Une idée pour empecher son apparition?

Encore un grand merci en tout cas

Private Sub UserForm_Initialize()

TextBox2 = Date

TextBox1 = Sheets("Demande").Range("A2")

'On supprime la demande affectée et on enregistre'

Dim cel As String

On Error Resume Next

cel = Sheets("Demande").Range("A2:A" & Sheets("Demande").Range("A" & Rows.Count).End(xlUp).Row).Find(TextBox1.Value).Address

If cel <> "" Then

Sheets("Demande").Range(cel).Delete

End If

ThisWorkbook.Save

If Me.TextBox1 = "" Then

MsgBox "Malheureusement, il n'y a plus de demande "

Exit Sub

End If

End Sub

Pour le code de sécurité, il faut le placer quelques part dans la procédure de ton USF. Tu te places à la fin de ton code Userform_Initialize au niveau du End sub tu sautes une lignes puis tu colles la macro UserForm_QueryClose.

Pour ne pas faire apparaître le userform tu peux utiliser les techniques ci-dessous à mettre juste après ton MsgBox à la place du Exit sub:

End 'Pour fermer l'userform (le plus adapté dans ton cas)
Unload Me 'Pour fermer en conservant les données (théoriquement)
Me.Hide 'Pour masquer l'userform sans le fermer réellement

J'utilise End la plupart du temps, donc je ne saurais te dire l'exacte différence entre chaque technique désolé

A plus !

Un grand merci.

Je prends note de ces astuces.

Sujet résolu

Rechercher des sujets similaires à "affectation suppression donnee textbox"