IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

USERFORM probleme programmation [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Août 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Août 2014
    Messages : 46
    Par défaut
    Pièce jointe 201548

    Bonjour, Voila je rencontre plusieurs souci
    je viens vers vous pour avoir de l'aide si possible

    j'ai noté sur la photo pour être plus clair.

    J'aimerais que quand je sélection la feuille dans Bâtiment ( 1 )
    dans ( 2 ) ma liste Colonne A, (3) B , (4) C , (5) I , (6) D , (7) E , (8) F , (9) G ,
    (10) J , (11) K...

    le problème premier c'est que j'arrive pas a avoir dans 2 ComboBox2 la colonne A après avoir choisi le bâtiment (1) ComboBox1.

    du coups je ne peut avancé dans mon projet

    merci d'avance pour l'aide que vous m'apporter

    James17

    je mais mon fichier ce serra plus facile je pense

    Pièce jointe 201572

  2. #2
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut
    bonsoir

    En reprenant votre code , je pense que vous voulez faire la lecture des lignes en fonction des feuilles et des lignes.

    Il faut je pense déjà declarer la variable m Globale, ensuite dans l'initialisation remplir le rowsource du combobox1, puis le rowsource du combobox2 dans la procedure combobox1_change, jai vu aussi que vous appeliez le "userform" par "userform au lieu de menu.

    En faisant cela vous faites la lecture des lignes donc les autres champs doivent être des textboxs ce que je vous propose.

    Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Dim m As String 'Déclarer m globale
     
    Private Sub ComboBox2_Change()
       ActiveSheet.Cells(ComboBox2.ListIndex + 6, 2).Select
       tniveau.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 2).Text
       tmodels.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 3).Text
       tcapacite.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 9).Text
       '...........
       ' faire les autres affichages de la même façon
     
    End Sub
     
    Private Sub CommandButton2_Click()
      Unload Menu
    End Sub
     
     
    Private Sub ListBox1_Click()
     
    End Sub
     
    Private Sub ListBox2_Click()
        With ListBox1
            .TopIndex = ListBox2.TopIndex
            .ListIndex = ListBox2.ListIndex
        End With
    End Sub
     
    Private Sub CommandButton1_Click()
    ThisWorkbook.Save
    Application.Quit
    End Sub
     
    Private Sub UserForm_Initialize()
     
     
      Application.EnableEvents = False
      For Each S In ActiveWorkbook.Sheets
        Me.ComboBox1.AddItem S.Name
      Next S
      Me.ComboBox1.ListIndex = 0 'pointe sur la 1ère feuille
      m = ComboBox1.List(1) 'm contient le nom de la 1ère feuille
     
     
      Application.EnableEvents = True
    End Sub
     
    Private Sub ComboBox1_Change()
      Dim source As Range, c As Range
     
      m = Me.ComboBox1.Value    'valeur pointée du combobox
      Sheets(m).Select
     
      Set source = ActiveSheet.Range(Cells(6, 1), Cells(6, 1).End(xlDown)) 'recherche de la zone fonction des feuilles
      ComboBox2.RowSource = source.Address
      ComboBox2.ListIndex = 0
     
    End Sub
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then Cancel = True
    End Sub
    Salutations les meilleures

    le fichier :EXTINCTEURS2.xls

    geogeo

  3. #3
    Membre averti
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Août 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Août 2014
    Messages : 46
    Par défaut re
    Un merci énorme a toi geogeo70

    J'aimerai que cette list soit en date, c'est possible?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datejour.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 10).Text
    merci

  4. #4
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut
    bonsoir,

    Mon essai donne bien la date dans le même format... avez-vous changé la listbox en textbox ? je n'avais pas changé dans le fichier puisque je n'avais pas été jusqu'au bout des affectations.

    le code suivant fonctionne chez moi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub ComboBox2_Change()
       tniveau.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 2).Text
       tmodels.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 3).Text
       tcapacite.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 9).Text
       tdate.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 10).Text
       tnom.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 11).Text
     
    End Sub
    Essayez ça devrait fonctionner (j'ai apppelé tdate et tnom les 2 "textbox")

    bonne nuit

    geogeo

  5. #5
    Membre averti
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Août 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel

    Informations forums :
    Inscription : Août 2014
    Messages : 46
    Par défaut
    Bonjour geogeo70,

    en faite je voudrais que quand je tape la date dans mon userform, elle ce mais sur la bonne cellule.

    pareil pour Pesé, Commentaire et ma liste déroulante des Noms
    si c'est possible ( pas faire attention au Commantaire ) petite faute de frappe dans l'userform

    Sinon impeccable pour le reste

    je te remet le fichier car depuis j ai bien avancé dessus

    encore merci de l'aide

    Pièce jointe 201826

    Pour les nom des agent je les ai mis dans colonne N de chaque feuille

    mais je me demande si ces pas mieux de faire un listbox

    cdlt

  6. #6
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut
    Bonsoir

    Je te joins mes modifications du code, une galère pour traiter les dates et nombres, mais cela fonctionne maintenant. il faudra penser à protéger les zones non editables. A vous de faire maintenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    Public m As String 'nom des feuilles
    Private Sub ccomm_Change()
        ActiveSheet.Cells(ComboBox2.ListIndex + 6, 12).Value = ccomm.Value
    End Sub
     
    Private Sub CommandButton1_Click()
    ThisWorkbook.Save
    End Sub
    Private Sub datejour_Change()
       Dim x As Integer
       'traitement des dates (anglaise en français)
       x = InStr(1, datejour.Value, "/")
       If x <> 0 Then
            x = InStr(x + 2, datejour.Value, "/")
            If x <> 0 And Len(datejour.Value) > x Then
                'reconstitution date française
                ActiveSheet.Cells(ComboBox2.ListIndex + 6, 10) = Month(datejour.Value) & "/" & Day(datejour.Value) & "/" & Year(datejour.Value)
            Else
                ActiveSheet.Cells(ComboBox2.ListIndex + 6, 10) = datejour.Value 'en attendant la suite
            End If
       End If
    End Sub
    Private Sub nnomm_Change()
        ActiveSheet.Cells(ComboBox2.ListIndex + 6, 11).Value = nnomm.Value
     
    End Sub
     
    Private Sub Tpese_Change()
        Dim st As String
        Dim bool As Boolean
     
        Application.EnableEvents = False
     
        'traitement des nombres
        If Tpese.Text <> "" Then
            'si on utilise en saisie le point pour la virgule
            If InStr(1, Tpese.Text, ".") <> 0 Then Tpese.Text = Replace(Tpese.Text, ".", ",")
            'reconstituer le nombre version anglaise
            If InStr(1, Tpese.Text, ",") <> 0 Then
                st = Tpese.Text
                st = Replace(st, ",", ".")
            Else
                st = Tpese.Text
            End If
            If IsNumeric(Tpese.Value) Then
                ActiveSheet.Cells(ComboBox2.ListIndex + 6, 7) = st
            Else
                'si on ne tape pas chiffre ou virgule
                ActiveSheet.Cells(ComboBox2.ListIndex + 6, 7) = ""
                Tpese.Text = ""
                bool = MsgBox("Vous devez saisir un nombre", vbOKOnly, "Attention !")
            End If
        End If
     
        Application.EnableEvents = True
    End Sub
     
    Private Sub UserForm_Initialize()
      Application.EnableEvents = False
      For Each S In ActiveWorkbook.Sheets
        Me.ComboBox1.AddItem S.Name
      Next S
      Me.ComboBox1.ListIndex = 0
      m = ComboBox1.List(0)
      Sheets(m).Activate
      nnomm.RowSource = Sheets(m).Range("N6:N13").Address
      Application.EnableEvents = True
    End Sub
    Private Sub ComboBox2_Change()
       Application.EnableEvents = False
     
       Cells(ComboBox2.ListIndex + 6, 1).Activate
       tniveau.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 2).Text
       tmodels.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 3).Text
       tcapacite.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 9).Text
       ttare.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 4).Text
       tpoids.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 5).Text
       ttromblon.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 6).Text
       ddiff.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 8).Text
       datejour.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 10).Text
       nnomm.Value = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 11).Value
       Tpese.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 7).Text
       ccomm.Text = ActiveSheet.Cells(ComboBox2.ListIndex + 6, 12).Text
     
     
     
     
       Application.EnableEvents = True
     
    End Sub
     
    Private Sub CommandButton2_Click()
    MsgBox ("Merci de votre visite!"), vbInformation, "A BIENTOT!"
    Unload Menu 'Application.Quit (à remettre si on veut sortir du fichier)
    End Sub
     
    Private Sub ComboBox1_Change()
      Dim source As Range, c As Range
     
      m = Me.ComboBox1.Value
      Sheets(m).Select
      'entrer la liste des noms en colonne N ligne 6  (peut être à cacher!)
      nnomm.RowSource = Sheets(m).Range(Cells(6, 14), Cells(6, 14).End(xlDown)).Address
      nnomm.Value = ""
     
      'entrer la liste des Numéros dans le combo2
      Set source = ActiveSheet.Range(Cells(6, 1), Cells(6, 1).End(xlDown))
      ComboBox2.RowSource = source.Address
      ComboBox2.ListIndex = 0
     
    End Sub
     
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then Cancel = True
    End Sub
    J'ai supprimé la gestion des fenêtres Windows qui ne me concernait pas...

    En tout cas ce code fonctionne chez moi en Excel 13

    a++

    le fichier : EXTINCTEURS3.xls

    geogeo

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme programme d'une Liaison RS232 Série en C
    Par dawud dans le forum Réseau
    Réponses: 4
    Dernier message: 02/03/2009, 22h08
  2. Probleme programme java
    Par G4uthier dans le forum Applets
    Réponses: 4
    Dernier message: 13/01/2008, 08h50
  3. probleme programme C
    Par space_56 dans le forum C
    Réponses: 24
    Dernier message: 14/11/2007, 00h08
  4. probleme programme structuré.
    Par argon dans le forum C
    Réponses: 10
    Dernier message: 31/01/2007, 10h11
  5. Slider problème programmation
    Par Bizarroide63 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 27/07/2006, 03h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo