Recherche avec un userform puis export dans cellule

bonoboas

XLDnaute Occasionnel
Bonjour,

J'ai créé un userform pour l'insertion de donnée date et montant dans 2 colonnes K et J

Pour se faire, j'indique le numéro d'intervention en colonne B.

J'ai essayé mais je dois avoir un problème de syntaxe au niveau de la recherche de la valeur puis mettre le numéro de la ligne en variable et enfin coller mes valeurs date et montant dans le tableau


Je vous joins le fichier

Encore merci pour votre aide.

Cordialement

Anthony
 
Dernière édition:
G

Guest

Guest
Re : Recherche avec un userform puis export dans cellule

Bonjour,

A mettre en lieu et place de tout ton code de UserForm:
Code:
Dim ligne As Long
Private Sub CommandButton1_Click()
    ligne = 0
    With Sheets("Base Travaux")
        If num.ListIndex > -1 Then
            'Récupérer le numéro de ligne en fonction de sa position dans la listBox
            ligne = .Range(num.RowSource).Rows(num.ListIndex + 1).Row
            .Range("J" & ligne) = CDate(dateRPS)
            .Range("K" & ligne) = montant
        End If
    End If
End With
UserForm1.Hide
End Sub
Private Sub CommandButton2_Click()
UserForm1.Hide
End Sub

A+
 

bonoboas

XLDnaute Occasionnel
Re : Recherche avec un userform puis export dans cellule

Merci Hasco, mais je pense qu'un textbox est mieux que le menu déroulant.
Est-ce qu'il est possible qu'au moment ou on tape le numéro, les textbox recherche la valeur concerné, comme ça si on veut on peut écraser la valeur ?
 

Paf

XLDnaute Barbatruc
Re : Recherche avec un userform puis export dans cellule

bonjour à tous,


même si la solution choisie par bonoboas n'est pas la meilleurs et , ci dessous quelques raisons du non fonctionnement de son code:

La recherche est lancée dans Private Sub Recherche_Change() 'au changement dans la combobox "Recherche"
or, sur l'USF, il n'y a qu'une Combobox nommée : num

dans cette même sub , on déclare Dim num As Range 'déclare la variable mais cette variable (qui sert au find ) n'est pas instanciée (et ne devrait pas être en "Range").

si on utilise la sub change de la combobox num, cette variable ne doit pas être déclarée, puisqu'alors, num ( équivallent de num.Value) est la valeur de la combobox

bonne suite
 

bonoboas

XLDnaute Occasionnel
Re : Recherche avec un userform puis export dans cellule

Je suis désolé mais j'ai du mal a trouver, la fonction recherche qui insère les valeurs dans les textbox jaunes

Ci-joint mon fichier
 

Pièces jointes

  • axDownload 2003.xls
    611.5 KB · Affichages: 53

bonoboas

XLDnaute Occasionnel
Re : Recherche avec un userform puis export dans cellule

Désolé pour Hasco, sa manipe fonctionne parfaitement mais le combobox n'est pas une manipe rapide car je dois utiliser la souris pour selectionner. Le mieux est le textbox ou je tape le numéro d'intervention ensuite excel recherche la valeur des textbox jaunes si c'est ok, je tape entrée sinon j'écrase la valeur.
Vous me suivez ?

nb : la recherche doit se faire sur toute la colonne B car j'ai environ 1000 lignes et tous les jours ça augmente.
j'ai mis : Set PlageDeRecherche = ActiveSheet.Columns(2)

Merci encore
 
G

Guest

Guest
Re : Recherche avec un userform puis export dans cellule

Bonjour,

Voilà pour la recherche, pour le reste je te laisse voir. La prochaine fois, ne mets pas de combobox si tu n'en veux pas et ne mets pas de validation qui empêche de saisir des dates dans tes cellules DateRPS. Ce n'est pas à nous d'adapter ton fichier pour pouboir faire nos tests.

A+
 
Dernière modification par un modérateur:

bonoboas

XLDnaute Occasionnel
Re : Recherche avec un userform puis export dans cellule

Bonjour Hasco, merci encore pour ton aide, ça marche super.
Voici le code si ça peut aider quelques personnes :
Code:
Dim Ligne As Long
Dim celluletrouvee As Range
Private Sub CommandButton1_Click()

If Trim(num.Text) = "" Then MsgBox "Vous devez entrer un numéro."
With Sheets("Base Travaux")
Set celluletrouvee = .Columns(2).Find(what:=num, after:=.Cells(9, 2), lookat:=xlWhole, LookIn:=xlValues)
If Not celluletrouvee Is Nothing Then
    .Range("K" & celluletrouvee.Row).Select
    .Range("J" & celluletrouvee.Row) = dateRPS
    .Range("K" & celluletrouvee.Row) = montant
End If
  Unload Me

End With

End Sub

Private Sub CommandButton2_Click()
 Unload Me
End Sub

Private Sub num_Enter()
Set celluletrouvee = Nothing
End Sub

Private Sub num_Exit(ByVal Cancel As MSForms.ReturnBoolean)
's'il n'y a rien (pas même une espace dans le textbox num) on sort
If Trim(num.Text) = "" Then Exit Sub
With Sheets("Base Travaux")
Set celluletrouvee = .Columns(2).Find(what:=num, after:=.Cells(9, 2), lookat:=xlWhole, LookIn:=xlValues)
    If Not celluletrouvee Is Nothing Then
        If IsDate(.Range("J" & celluletrouvee.Row)) Then dateRPS = Format(.Range("J" & celluletrouvee.Row), "dd/mm/yyyy")
        montant = .Range("K" & celluletrouvee.Row)
    Else
        MsgBox "numéro non trouvé"
    End If
End With
End Sub

Cependant j'aimerais avoir des explications sur quelques lignes :

Ces lignes pour le bouton annulé (perso j'aurais mis un userform1.hide):
Code:
Private Sub CommandButton2_Click()
 Unload Me
End Sub


L'interprétation de "Enter()" :
Code:
Private Sub num_Enter()
Set celluletrouvee = Nothing
End Sub


Et ce début de ligne sur :
Code:
Private Sub num_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Merci encore Hasco
 

Discussions similaires

Réponses
17
Affichages
663
M
Réponses
9
Affichages
477
Maikales
M
Réponses
12
Affichages
247

Statistiques des forums

Discussions
312 276
Messages
2 086 711
Membres
103 377
dernier inscrit
fredy45