Comment agir sur une feuille d'un classer avec une comboBox ?

Résolu
sekouausud -  
 sekouausud -
Bonjour,
Je souhaite avoir votre aide.
Je voudrais créer un Userform et dans ce dernier j'aimerais créer une comboBox qui contiendra les noms de feuilles précises du classeur, ainsi si on sélectionne le nom d'une feuille, (exemple : "janvier") dans la comboBox, les données saisies dans tous les champs du Userform aillent se placer au bon endroit dans la feuille appropriée, c'est à dire la feuille "janvier" pour notre exemple. Et cela pour chaque nom de feuilles qui se trouve dans la comboBox du Userform

Merci d'avance

10 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Tu détermine la ligne et la colonne et ceci te permet de sauvegarder dans la bonne feuille :
        With Sheets(Me.ComboBox1)
            .Cells(ligne, colonne).Value = Me.textbox1.Value
        End With
    

    0
    1. sekouausud
       
      Ok
      Voudriez bien m'excuser ; mais comment faire pour charger les noms des feuilles
      dans ma comboBox et cela sous forme de liste déroulante ?

      Merci encore une fois pour votre disponibilité
      0
  2. sekouausud
     
    Jusqu'à présent je suis bloqué, je ne parviens pas à monter dans la comboBox la liste déroulante des noms des différentes feuilles du classeur devant accueillir les données saisies dans les champs du UserForm.

    Aidez-moi, je travail avec Excel 2007

    Cordialement
    0
  3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    C'est très simple, .... lorsque l'on sait ;-) ;-)
    Private Sub UserForm_Initialize()
    Dim feu As Integer
    For feu = 1 To Sheets.Count
        Me.ComboBox1.AddItem Sheets(feu).Name
    Next feu
    End Sub
    

    0
    1. sekouausud
       
      Ok, je vais essayer.
      Cordialement
      0
      1. sekouausud > sekouausud
         
        Ok, c génial, ça marche pour les noms feuilles, seulement :

        Encore quelques coups de pouces

        1/ Excel a chargé les noms de toutes les feuilles du classeur dans la comboBox alors que je n'ai besoin que de quelques unes de mon choix ;

        2/ Aussi quand je valide l'enregistrement, les données apparaissent uniquement dans le tableau principal de ma base de données et rien n'est enregistré dans les autres feuilles (de la liste déroulante de la comboBox) censées recevoir les mêmes données.

        Merci, grâce à vous je suis sur le point de rendre fonctionnel mon projet de fichier.


        Cordialement à vous
        0
    2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      1/tu ne fais
       Me.ComboBox1.AddItem Sheets(feu).Name
      que si le nom de feuille te convient ou tu démarres au numéro de feuille
      feu = ?
      que tu veux.
      2/ censées recevoir les mêmes données si tu écris la ligne que je t'ai mis au début.
      0
  4. sekouausud
     
    Je sais que nous avons pris bcp de votre temps mais nous comptons sur votre compréhension.

    Mon problème persiste, c'est peut être dû au code ci-dessous que j'ai déjà affecté à mon bouton "Ajouter" pour valider l'enregistrement et cela marche à l'exception du contenu des feuilles dont les noms sont dans la cliste déroulante de lacomboBox
    Private SubbtnAjouter_clik()
    Sheets("Ma base de données").Activate
    Range("A1").select
    selection.End(xlDwn).select
    selection.offset(1, 0).select
    ActiveCell=cboClasse.value [ici c'est une autre comboBox du Userform]
    Activecell.offset(0,1).value=txtPrenom
    Activecell.offset(0,2).value=txtNom
    etc.......jusqu'au contenu de la dernière colonne
    End Sub
    Cordialement
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Lorsque tu met du code utilise les balises pour plus de lisibilité.
    Voici ton code modifié, en évitant les 'select' surtout en fonctionnant sur 2 feuilles, et en documentant chaque feuille.
    Private SubbtnAjouter_clik()
    Dim lg1 As Long, lg2 As Long
    Dim w1 As Worksheet, w2 As Worksheet
        Set w1 = Sheets("Ma base de données")
        lg1 = w1.Cells(Rows.Count, 1).End(xlUp).Row
        Set w2 = Sheets(combobox_feuilles)  ' à modifier avec ton nom
        lg2 = w2.Cells(Rows.Count, 1).End(xlUp).Row
        w1.Cells(lg1, 1).Value = cboClasse.Value
        w2.Cells(lg2, 1).Value = cboClasse.Value
        w1.Cells(lg1, 2).Value = txtPrenom
        w2.Cells(lg2, 2).Value = txtPrenom
        w1.Cells(lg1, 3).Value = txtNom
        w2.Cells(lg2, 3).Value = txtNom
        etc
    End Sub
    Dupliquer les données ne me parait pas une bonne solution car il vaut mieux les filtrer lorsque l'on en as besoin que les avoir en double.
    0
  7. sekouausud
     
    Ok, après avoir écrit le code modifié que vous avez bien voulu m'envoyer,

    j'ai testé testé mon Userform mais j'ai reçu (après avoir clické sur le bouton "Ajouter"), le message suivant << Erreur d'exécution '13' : Incompatibilité de type>> et dans le code écrit le partie " Set w2 = Sheets(cboMois) est coloriée en jaune.

    Merci encore une fois à vous
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Quelle est la valeur de 'cboMois' ?
      0
  8. sekouausud
     
    Vous voudriez bien nous excuser par rapport à notre tardive réaction ; on avais une coupure d'électricité.

    La valeurs de 'cboMois' est 'Septembre', c'est le nom de la feuille que j'ai sélectionnée dans la liste déroulante 'cboMois' à partir du Userform ; d'ailleurs, au niveau du code écrit si on pointe le curseur sur 'cboMois', on voit écrit dans le ControlTipTexte 'cboMois'="Septembre".

    Je ne sais si j'ai bien répondu à votre question concernant la valeur de 'cboMois' car le langage informatique ne m'est familier
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour,

      Essaie comme ceci cela devrait fonctionner :
      Private Sub btnAjouter_Click()
      Dim lg1 As Long, lg2 As Long
      Dim w1 As Worksheet, w2 As Worksheet
          Set w1 = Sheets("Ma base de données")
          lg1 = w1.Cells(Rows.Count, 1).End(xlUp).Row + 1
          Set w2 = Sheets(cboMois.Value)
          lg2 = w2.Cells(Rows.Count, 1).End(xlUp).Row + 1
          w1.Cells(lg1, 1).Value = cboClasse.Value
          w2.Cells(lg2, 1).Value = cboClasse.Value
          w1.Cells(lg1, 2).Value = txtPrenom.Value
          w2.Cells(lg2, 2).Value = txtPrenom.Value
          w1.Cells(lg1, 3).Value = txtNom.Value
          w2.Cells(lg2, 3).Value = txtNom.Value
      End Sub
      
      0
    2. sekouausud > gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Très bien et merci beaucoup à CCM particulièrement à vous gbinforme.

      En plus que vous m'aidiez à écrire 2 codes encore pour 2 boutons à mettre sur le même userform :

      1 bouton : pour une recherche dont les résultats vont apparaître dans les champs du formulaire:
      1 bouton : pour faire et enregistrer des modifications. En fait je trouve que cela est nécessaire car j'ai relevé des données (en double) qui devraient être simplement modifiées en partie pour régler le problème des doublons et des erreurs éventuelles.

      Merci encore, vous voyez bien que je ne suis pas prêt de vous lâcher de si tôt.
      0
    3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonsoir,

      Si tu pouvais nous mettre un exemple de structure des données, sans éléments personnels, ce serait plus facile de t'aider.
      Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ (mode d'emploi) et tu mets ici le lien obtenu.
      0
    4. sekouausud > gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Bonjour,

      Je n'arrive pas à vous envoyer mon fichier comme demandé. je ne sais pas pourquoi ?

      Peux être, je m'y prends mal . Je suis sur 'joint.com' où j'ai lancé le chargement mais la page suivante ne s'ouvre pas ; non compressé mon fichier fait 42,8 ko


      Merci d'avance
      0
    5. sekouausud > gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Bonjour,
      Finalement, j'ai réussi à télécharger le fichier et en voici le lien
      http://www.cjoint.com/c/FGymwcuwoTD

      Si ça marche, j'aurais à mettre dans le WorkBook 2 autres formulaires plus ou moins similaires.

      Merci d'avance
      0
  9. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    Bonjour,

    Finalement je suis un peu en avance. ;-)

    1 bouton : pour une recherche dont les résultats vont apparaître dans les champs du formulaire:
    En fait c'est ton combobox 'aller à' qui est documenté avec ta base.
    Si tu choisis la classe et/ou le mois, ils seront filtrés.
    Si tu choisis un élément de 'aller à' tes saisies sont documentées et tu peux les modifier.

    1 bouton : pour faire et enregistrer des modifications.
    Ton bouton enregistre les modifications, même le changement de mois.
    J'ai modifié la gestion du bouton ajouter qui englobe aussi modifier maintenant. Seul l'un ou l'autre ou aucun n'est disponible.

    https://www.cjoint.com/c/FGzm5gdmC0l

    Bon test.
    0
  10. sekouausud
     
    Bonjour,

    Merci d'avance

    Vous vous êtes, sans doute, fait violence pour être en avance, je vous en suis reconnaissant.

    Je termine quelques tâches professionnelles avant d'avoir le temps de tester le formulaire.

    De toute façon, vous me permettrez certainement de revenir à vous si jamais je tombais encore sur des difficultés dans la manipulation du fichier.

    Cordialement
    0
  11. sekouausud
     
    Bonsoir,
    J'ai testé le formulaire mais je suis confronté au problème suivant :
    Pour le même élève déjà introduis dans la base de données je ne peux pas modifier pour ajouter d'autres paiements concernant les autres mois sans effacer le 1e mois accompagnant la saisie de départ.

    Dans mon projet, un même élève a la possibilité de faire plusieurs paiements en des mois différents et je ne souhaiterais pas à chaque fois reprendre la saisie de toutes les données dudit élève.
    Je ne sais pas si j'ai bien assez exposé ma préoccupation.

    Merci, encore une fois
    0
    1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour,

      je ne peux pas modifier pour ajouter d'autres paiements
      Ce que tu appelles une modification n'en est pas une car en fait c'est un ajout.
      Il faut donc modifier la gestion des boutons ajout/modif pour permettre l'ajout.
      0
      1. sekouausud > gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bonjour,

        Vous avez raison et merci pour tout ce que vous m'avez apporté jusque là

        Cordialement
        0