Aide pour code VBA

Résolu
christ69fr Messages postés 22 Statut Membre -  
 momo -
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. momo
     
    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
    0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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...
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
      0
  3. christ69fr Messages postés 22 Statut Membre 1
     
    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.
    0
  4. momo
     
    Bonjour
    j'ais jouer avec ta base
    ça va te donner des idées

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