Aide pour code VBA

Résolu
Bonjour,

J'ai créer un doc pour un inventaire des postes informatique dans le groupes scolaires. J'ai un formulaire pour pouvoir modifier et enregistrer mes données, mais le problème est qu'il ne trouve pas les données enregistrer.

Est-ce quelqu'un peut me dire si mes codes VBA sont bon est adapté a mon tableau.

Merci.

http://www.cjoint.com/c/GCprIrxpWh1

4 réponses

  1. Bonjour
    dur dur
    voila déjà un debut
    'Private Sub Userform_initialized()
    Private Sub UserForm_Initialize()
    Set Ws = Sheets("Inventaire salle info GS")
       ComboBox1.List = Ws.Range("A2:A" & Ws.Range("A" & Rows.Count).End(xlUp).Row).Value
       'Pour la liste déroulante Civilité
       ComboBox2.List = Array("", "M.", "Mme", "Mlle")
    End Sub
    

    A+
    Maurice
    1. Contributeur
      Bonjour

      Effectivement!...

      dans le code de l'userform il y a 2 "Private Sub Userform_initialize()" dont 1 vide et l'autre, celui codé, comporte une faute de frappe "Private Sub Userform_initialized()

      " Inventaire_salle_info_GS " au lieu de "Inventaire_salle_info_GS"

      donc, il ne se passe rien

      d'autre part, dans ton code,Combobox2 installe une civilité ??? alors qu'il s'agit du groupe scolaire !!!!
      Tu as env 160 lignes et 20 colonnes: pourquoi déclarer en long alors que "Byte" suffit largement ?

      tu as 17 textbox et tu boucles sur 20 textbox...

      etc, etc...

      ci dessous proposition de code pour le chargement en Usf du choix d'un identifiant colonne A
      Option Explicit
      Dim Ws As Worksheet
      '----------------------------------
      'Pour le formulaire
      Private Sub Userform_initialize()
      Dim LIg As Byte
      Set Ws = Sheets("Inventaire salle info GS")
      With Me.ComboBox1
      For LIg = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
      .AddItem Ws.Range("A" & LIg)
      Next
      End With
      End Sub
      '---------------------------------------------------
      Private Sub ComboBox1_Change()
      Dim Ligne As Byte, Col As Byte
      If Me.ComboBox1.ListIndex = -1 Then Exit Sub
      With Ws
      Ligne = .Columns("A").Find(ComboBox1, .Range("A1"), xlValues).Row
      ComboBox2 = .Cells(Ligne, "B")
      For Col = 1 To 17
      Me.Controls("TextBox" & Col) = .Cells(Ligne, Col + 2)
      Next
      End With
      End Sub


      Pour la suite nouveau, modif... ,je regarde dès que je peux...
      1. Contributeur
        J'ai jeté un œil pour la correspondance des textbox et leur position dans la feuille: les affectations cellule-textbox sont la plupart du temps fausses ! les données dans l'userform ne correspondent pas
        donc rectifie ces erreurs si tu veux continuer l'aide: il faut que les numéros de textbox suivent l'ordre dans la feuille inventaire

        a noter que l'ordre "au cas pas cas" dans un nouveau pc est faux aussi
    2. Merci, Michel_m. J'ai vu les erreurs que tu as cités ci-dessus. J'ai fait les correctifs comme tu as dis dessus. Et pour le reste c'est Ok. Grace à momo et a toi, j'ai réussir à résoudre mon problèmes. Merci.
      Je vais clore le sujet pour l'instant.
      1. Bonjour
        j'ais jouer avec ta base
        ça va te donner des idées

        http://www.cjoint.com/c/GCum1vCf1mt
        A+
        Maurice