Problème je ne sais pas où

Signaler
Messages postés
105
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 novembre 2008
-
Messages postés
105
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 novembre 2008
-
Bonjour, je vais tenter de vous expliquer mon problème mais étant donné que je ne sais pas d'où il vient bref,

Alors j'ai un userform UTIL avec une liste déroulante qui recupére les données de la colonne A de la feuille "Abonnements", puis j'ai une textbox.
Quand on clique sur OK, l'activité choisi est copié dans la case B2 de la feuille "Calculs" et le reste de la ligne (prix lié à l'activité) est copié dans le feuille "calculs" mais de la case B4 à F4.
Mon problème est que quand je démarre je programme je lance le userform UTIL (on considère que des activités et des prix sont pésents dans la feuille "Abonnements"), je choisis une activité puis je tape une fréquence dans la txtbox je clique sur OK, toutes les valeurs ont bien éte collé correctement, il m'apparai le userform Reponse avec ma reponse jusqu'à là tout va bien.
Mais quand je réitérre cette procédure c'est à dire que je rechoisi une activité (sans redemarrer le programme), l'activité que j'avais choisis précédemment n'est plus là (ligne blanche), je choisi donc une autre activité et une autre fréquence ej reclique sur OK et LA problème, il me colle des valeurs de la feuille "calculs" et non celles de "Abonnements".

Mon code est celui là:

Private Sub UserForm_Initialize()
    Dim i As Integer, DerniereLigne As Integer
    Dim Ws As Worksheet
    Set Ws = Sheets("Abonnements")
    DerniereLigne = Ws.Range("A65536").End(xlUp).Row + 1
    For i = 2 To DerniereLigne
        If Range("A" & i).Value <> vbNullString Then
           type_dact.AddItem Sheets("Abonnements").Range("A" & i).Value
        End If
    Next i
End Sub

et celui là :

Private Sub OK_Click()
Dim Recherche As Range
    Set Recherche = Sheets("Abonnements").Cells.Find(type_dact.Text, LookIn:=xlValues, LookAt:=xlWhole)
    If type_dact = "" Then
        erreur = MsgBox("Le choix d'une activité est obligatoire", vbOKOnly + vbCritical, "OUPS")
    Exit Sub
    ElseIf Not Recherche Is Nothing Then
        Sheets("calculs").Range("B2").Value = Range("A" & Recherche.Row).Value
        Sheets("calculs").Range("B4:F4").Value = Range("B" & Recherche.Row & ":F" & Recherche.Row).Value
    End If
        Unload UTIL
        Reponse.Show
End Sub

Voilà j'espère avoir bien expliqué mon problème, je suis sous excel 2003.

2 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Rebonjour
Ta liste déroulante (type_dact je suppose) appartient à ta userform UTIL (je suppose aussi)
Puisque tu fais un Unload UTIL à la fin de OK_Click, tous les composants et leut contenu disparait, c'est normal.
Eventuellement, au lieu de la décharger, masque là, essaye
   UTIL.Hide
Les données resteront présentes et lors d'un prochain appel, fais un UTIL.Show

Si ce ne sont pas les données de la bonne feuille qui sont utilisées, c'est que la feuille par défaut n'est pas bonne.
Revérifie que, à chaque fois, tu spécifies bien le nom de la feuille dans tes sélections.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
105
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 novembre 2008

Oui je me suis dis que j'avais oublié de spécifié sur quelle feuille il fallait prendre les valeurs mais je ne trouve pas.
J'ai mis les 2codes qui étaient suceptibles de contenir une erreur. Je ne l'ai toujours pas trouvée.