Macro : Vérifier contenu d'un Textbox

Emmanuel31100

XLDnaute Nouveau
Bonjour à tous!:cool:

Est-il possible de créer une macro vba permettant de prévenir un utilisateur lors de l'inscription de données dans un textbox si la valeur inscrite dans la textbox a déjà été saisie.

Plus de détails:p:

J'utilise un USF avec plusieurs textbox me permettant de saisir directement dans le mois actuel des nouveaux dossiers. Voici le code du bouton 'OK':

Code:
Private Sub CommandButton1_Click()
Dim rp As Long
Dim today As Date

With Sheets(MonthName(Month(Date)))
    rp = .Range("A65000").End(xlUp).Row + 1 'première ligne vide colonne A
    .Cells(rp, 1) = TextBox1
    .Cells(rp, 2) = Textbox2
    .Cells(rp, 3) = Textbox3
         
End If

End With
Unload Me
If CheckBox1 = True Then UserForm1.Show

J'aimerais que lorsque je clique sur 'OK', avant d'exécuter le code, la nouvelle macro recherche dans chaque feuille si le nom inscrit dans le textbox existe déjà et du coup lance un Msgbox du style :

Code:
MsgBox "Un dossier a déjà été créé sous cette référence. Voulez-vous continuer l'opération?", vbYesNo

Dans le cas ou l'utilisateur cliquerait sur Oui alors application normale de l'USF. Si l'utilisateur clique sur non, alors annulation de la procédure.

Donc voila, j'espère avoir été clair :)confused:) et j'espère que l'un d'entre vous aura une solution à m'apporter!:D

Un grand merci d'avance, ;)

Emmanuel
 

Emmanuel31100

XLDnaute Nouveau
Re : Macro : Vérifier contenu d'un Textbox

J'ai commencé à taper une macro mais je ne sais pas trop comment rédiger le passage if... then...:confused:

Code:
Sub dispo()
Dim a As Long

x = TextBox1
  
    With Sheets("CSE M").Range("A2:A65500")
      Set c = .Find(x, LookIn:=xlValues)
      If Not c Is Nothing Then
        premier = c.Address
    
        Do
           a = MsgBox("Un dossier a déjà été créé pour: " & TextBox1.Value & "." & " Voulez-vous continuer?", vbYesNo)
        
         If vbYes Then Exit Sub
         If vbNo Then Exit Sub
         
            
          Set c = .FindNext(c)
         Loop While Not c Is Nothing ' And c.Address <> premier
  
        End If
              
      End With

End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Macro : Vérifier contenu d'un Textbox

Bonjour Emmanuel,

si j'ai bien compris... pas sûr..

Code:
 If MsgBox("Un dossier a déjà été créé pour: " & TextBox1.Value & "." _
    & " Voulez-vous continuer?", vbYesNo) = vbNo Then Exit Sub

bonne journée
@+
 

GeoTrouvePas

XLDnaute Impliqué
Re : Macro : Vérifier contenu d'un Textbox

Arf j'arrive encore une fois après Pierrot93 ! :p

Bon, vu que j'ai quand même gratté qqchose, je te le post au cas où ça pourrait t'aider :

Code:
Sub Test()

Dim Feuille As Worksheet

Existe = False

For Each Feuille In ThisWorkbook.Worksheets
    If Not Feuille.Rows(1).Find(Textbox1.Text, , , xlWhole) Is Nothing Then
        Existe = True
    End If
Next

If Existe = True And MsgBox("Un dossier a déjà été créé sous cette référence. Voulez-vous continuer l'opération", vbOKCancel) <> 1 Then
    Exit Sub
End If

'Place ici ta macro de saisie'

End Sub
 

Emmanuel31100

XLDnaute Nouveau
Re : Macro : Vérifier contenu d'un Textbox

Merci pour votre aide! Finalement la recherche ne se fait pas dans plusieurs feuilles mais dans une seule appellée "CSE M".

Vu que j'ai commencé a écrire mon code j'aimerais bien arriver au bout de celui-ci.. :Dmalheureusement le code suivant ne fonctionne pas :( quelqu'un aurait-il une explication?

Code:
Sub dispo()
x = TextBox1
  For Each s In ActiveWorkbook.Sheets("CSE M")
    With Sheets(s.name).Cells
      Set c = .Find(x, LookIn:=xlValues)
      If Not c Is Nothing Then
        premier = c.Address
        Do
        c.EntireRow.Copy
         Set c = .FindNext(c)
         Loop While Not c Is Nothing ' And c.Address <> premier
         If MsgBox("Un dossier a déjà été créé pour: " & TextBox1.Value & "." _
    & " Voulez-vous continuer?", vbYesNo) = vbNo Then
         Sheets(MonthName(Month(Date))).Select
            dl = .Range("A65000").End(xlUp).Row
            Cells(dl, 1).Activate
            EntireRow.Delete
         If MsgBox("Un dossier a déjà été créé pour: " & TextBox1.Value & "." _
    & " Voulez-vous continuer?", vbYesNo) = vbYes Then Exit Sub
        End If
    End With
Next s
End Sub

C'est un peu du "n'importe quoi":rolleyes:, mais vu que je ne maitrise pas vba à 100% c'est une idée que j'ai eu pour résoudre mon problème.
En gros si l'utiliseur clique sur 'NON' dans ce cas la dernière ligne du tableau de la page du mois est supprimée (celle qui venait d'être saisie).
S'il clique sur oui, rien ne se passe, la saisie est validée.

Qu'en pensez vous? Pourquoi ne fonctionne-t-elle pas? des suggestions?
 

Pierrot93

XLDnaute Barbatruc
Re : Macro : Vérifier contenu d'un Textbox

Re

en fait il te manque un "end if" :

Code:
Sub dispo()
x = TextBox1
  For Each s In ActiveWorkbook.Sheets("CSE M")
    With Sheets(s.Name).Cells
      Set c = .Find(x, LookIn:=xlValues)
      If Not c Is Nothing Then
        premier = c.Address
        Do
        c.EntireRow.Copy
         Set c = .FindNext(c)
         Loop While Not c Is Nothing ' And c.Address <> premier
         If MsgBox("Un dossier a déjà été créé pour: " & TextBox1.Value & "." _
    & " Voulez-vous continuer?", vbYesNo) = vbNo Then
         Sheets(MonthName(Month(Date))).Select
            dl = .Range("A65000").End(xlUp).Row
            Cells(dl, 1).Activate
            EntireRow.Delete
         [COLOR="Red"][B]End If[/B][/COLOR]
         If MsgBox("Un dossier a déjà été créé pour: " & TextBox1.Value & "." _
    & " Voulez-vous continuer?", vbYesNo) = vbYes Then Exit Sub
        End If
    End With
Next s
End Sub
 

Emmanuel31100

XLDnaute Nouveau
Re : Macro : Vérifier contenu d'un Textbox

Après modification du code voila un nouveau message d'erreur : Erreur d'exécution '424' : Objet requis

Code:
Sub dispo()
x = TextBox1
    With Sheets("CSE M").Cells
      Set c = .Find(x, LookIn:=xlValues)
      If Not c Is Nothing Then
        premier = c.Address
        Do
         [B]If MsgBox("Un dossier a déjà été créé pour: " & TextBox1.Value & "." _
    & " Voulez-vous continuer?", vbYesNo) = vbNo Then[/B]
         Sheets(MonthName(Month(Date))).Select
            dl = .Range("A65000").End(xlUp).Row
            Cells(dl, 1).Activate
            EntireRow.Delete
         If MsgBox("Un dossier a déjà été créé pour: " & TextBox1.Value & "." _
    & " Voulez-vous continuer?", vbYesNo) = vbYes Then Exit Sub
        End If
        
        
        
         Set c = .FindNext(c)
         Loop While Not c Is Nothing ' And c.Address <> premier
        End If
       End With
End Sub

En gras la partie qui bug. Le mieux c'est que je te fasse un fichier d'exemple.. parce qu'avec tous les tatonnements que je fais depuis tout à l'heure si j'ai un nouveau bug à chaque changement on va pas s'en sortir lol
 

GeoTrouvePas

XLDnaute Impliqué
Re : Macro : Vérifier contenu d'un Textbox

C'est un peu du "n'importe quoi":rolleyes:, mais vu que je ne maitrise pas vba à 100% c'est une idée que j'ai eu pour résoudre mon problème.
En gros si l'utiliseur clique sur 'NON' dans ce cas la dernière ligne du tableau de la page du mois est supprimée (celle qui venait d'être saisie).
S'il clique sur oui, rien ne se passe, la saisie est validée.

Qu'en pensez vous? Pourquoi ne fonctionne-t-elle pas? des suggestions?

Difficile de dire si ça fonctionne sans avoir un exemple de ton fichier mais en regardant très vite, ça ne me paraît pas du tout cohérent car :

1) Tu ne devrais pas avoir à poser deux fois la question : "Un dossier a déjà été créé pour..."

2) Tu ne devrais pas commencer par copier / coller ton nouveau dossier pour le supprimer après si l'utilisateur répond "Non"
......

Fais nous passer un exemple de ton fichier qu'on puisse s'y pencher sérieusement dessus.

Edit : Salut Pierrot93 !
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Macro : Vérifier contenu d'un Textbox

Re,

comprends pas pourquoi :
Code:
         Sheets(MonthName(Month(Date))).Select
            dl = .Range("A65000").End(xlUp).Row
            Cells(dl, 1).Activate
            EntireRow.Delete

tu sélectionne une feuille mais tu recherches la dernière ligne de la feuille "CSE M" et tu supprimes cette même ligne mais sur la feuille active... une feuille mois... à noter sur ces feuilles aucune donnée sauf la ligne de titre... pas facile pour tester et adapter tout ca....
 

Emmanuel31100

XLDnaute Nouveau
Re : Macro : Vérifier contenu d'un Textbox

désolé! je vois ce que tu veux dire! j'ai un peu de mal avec VBA et donc je pensais qu'en mettant
Code:
Sheets(MonthName(Month(Date))).Select
cela chercherait la dernière ligne de la page du mois.

Pour le principe je l'ai expliqué avant. En fait, vu que je n'arrive pas (je n'ai pas le niveau) à créer une simple msgbox me disant que le fichier existe dans CSE M donc 'continuer la procédure ou annuler tout ' j'ai pensé à créer un msgbox puis derrière l'opération serait de supprimer la ligne saisie si la personne répond non et la laisser si elle dit oui.

Désolé vraiment pour le peu d'aide que j'apporte, VBA est encore assez récent dans ma tête et je pêche sur pas mal de choses encore:(
 

GeoTrouvePas

XLDnaute Impliqué
Re : Macro : Vérifier contenu d'un Textbox

Cette petite macro devrait faire l'affaire non ? :

Code:
Private Sub CommandButton2_Click()

If Not ThisWorkbook.Sheets("CSE M").Columns(1).Find(TextBox1.Text, , , xlWhole) Is Nothing Then
    
    If MsgBox("Un dossier a déjà été créé sous cette référence. Voulez-vous continuer l'opération", vbOKCancel) <> 1 Then
        
        Exit Sub
    
    Else
        
        With Sheets(MonthName(Month(Date)))
            dl = .Range("A65000").End(xlUp).Row + 1
            .Cells(dl, 1) = TextBox1
            .Cells(dl, 2) = TextBox2
            .Cells(dl, 3) = TextBox3
        End With
    
        Sheets(MonthName(Month(Date))).Select
    
    End If

End If

Unload Me

End Sub
 

Discussions similaires

  • Question
Microsoft 365 TEXTBOX
Réponses
7
Affichages
411

Statistiques des forums

Discussions
312 671
Messages
2 090 757
Membres
104 652
dernier inscrit
fannechere