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 :

Besoin d aide pour userform [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 21
    Par défaut Besoin d aide pour userform
    bonjours a tous et toutes et bonne année

    voila j'ai un petit problème
    j'ai fait un userform

    mais j'ai du louper quelque choses car quant je rentre des données la pas trop de problèmes mais si je sélectionne
    une donnée pour la modifier
    il affiche les données mais pas dans les bon textbox

    si quelqu'un pouvais m'aider cela serais super
    je joint un model qui serra plus parlant retest1.xlsm

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonsoir Patgravure, bonsoir le forum,

    Avant de modifier une ligne de données il faut la sélectionner et ta méthode ne permet pas cela. Regarde ce fil
    ici il y a un exemple remarquable et très abouti de PhilippeTulliez. Essaie de t'en inspirer...

  3. #3
    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 une solution...
    Je pense qu'il vaut mieux utiliser les "controlsource" des box; cela permet de faire un formulaire et changer de ligne quand on veut, les effacer et réécrire facilement en direct. Il faut peut être y ajouter des contrôle de saisie avec les "change".
    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Set Ws = Sheets("ACHAT") 'Correspond au nom de votre onglet dans le fichier Excel
     ligne = Ws.Range("A" & Rows.Count).End(xlUp).Row + 1
     
     ComboBox1.ControlSource = "achat!A" & CStr(ligne)
     TextBox1.ControlSource = "achat!B" & CStr(ligne)
     TextBox3.ControlSource = "achat!C" & CStr(ligne)
     ComboBox2.ControlSource = "achat!E" & CStr(ligne)
    J'ajouterai au formulaire un spinbutton pour changer de ligne (voir le source)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub SpinButton1_SpinUp()
    Dim ligne As Integer
     
     ligne = CInt(Right(TextBox1.ControlSource, Len(TextBox1.ControlSource) - 7)) - 1
     If ligne = 1 Then Exit Sub
     ComboBox1.ControlSource = "achat!A" & CStr(ligne)
     TextBox1.ControlSource = "achat!B" & CStr(ligne)
     TextBox3.ControlSource = "achat!C" & CStr(ligne)
     ComboBox2.ControlSource = "achat!E" & CStr(ligne)
     
    End Sub
    Je ferai également quelques modifications dans la feuille achats en automatisant par la recherche v le pht.

    le source :
    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
    Private Sub SpinButton1_SpinDown()
    Dim ligne As Integer
     
     ligne = CInt(Right(TextBox1.ControlSource, Len(TextBox1.ControlSource) - 7)) + 1
     
     ComboBox1.ControlSource = "achat!A" & CStr(ligne)
     TextBox1.ControlSource = "achat!B" & CStr(ligne)
     TextBox3.ControlSource = "achat!C" & CStr(ligne)
     ComboBox2.ControlSource = "achat!E" & CStr(ligne)
     
    End Sub
     
    Private Sub SpinButton1_SpinUp()
    Dim ligne As Integer
     
     ligne = CInt(Right(TextBox1.ControlSource, Len(TextBox1.ControlSource) - 7)) - 1
     If ligne = 1 Then Exit Sub
     ComboBox1.ControlSource = "achat!A" & CStr(ligne)
     TextBox1.ControlSource = "achat!B" & CStr(ligne)
     TextBox3.ControlSource = "achat!C" & CStr(ligne)
     ComboBox2.ControlSource = "achat!E" & CStr(ligne)
     
    End Sub
     
    'Pour le formulaire
    Private Sub UserForm_Initialize()
     Dim J As Long
     Dim I As Integer
     Dim ligne As Integer
     
     Set Ws = Sheets("ACHAT") 'Correspond au nom de votre onglet dans le fichier Excel
     ligne = Ws.Range("A" & Rows.Count).End(xlUp).Row + 1
     
     ComboBox1.ControlSource = "achat!A" & CStr(ligne)
     TextBox1.ControlSource = "achat!B" & CStr(ligne)
     TextBox3.ControlSource = "achat!C" & CStr(ligne)
     ComboBox2.ControlSource = "achat!E" & CStr(ligne)
    End Sub
     
    'Pour la liste déroulante Code client
    Private Sub ComboBox1_Change()
     Dim ligne As Integer
     Dim I As Integer
     
     'If Me.ComboBox1.ListIndex = -1 Then Exit Sub
    ' Ligne = Me.ComboBox1.ListIndex + 2
    ' ComboBox1 = Ws.Cells(Ligne, "A")
    ' For I = 1 To 3
    ' Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 2)
    ' Next I
    End Sub
     
     
    'Pour le bouton Nouveau contact
    Private Sub CommandButton4_Click()
     Dim L As Integer
     If MsgBox("Confirmez-vous l'annulation de ce nouveau contact ?", vbYesNo, "Demande de confirmation de suppression") = vbYes Then
    ' L = Sheets("ACHAT").Range("A65536").End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide
     
    ' Range("A" & L).Value = ComboBox1
    ' Range("E" & L).Value = ComboBox2
    ' Range("B" & L).Value = CDate(TextBox1)
    ' Range("D" & L).Value = TextBox2.Value
    ' Range("C" & L).Value = TextBox3
     TextBox1.Text = ""
     TextBox3.Text = ""
     ComboBox1.Text = ""
     ComboBox2.Text = ""
     
     
      End If
    End Sub
     
    Private Sub commandButton3_Click()
     Unload Me
    End Sub
    et voici mes propositions sur le fichier :
    retest1cor.xlsm

    bonne soirée

    geogeo70

    ps: n'oubliez pas de protéger les cellules de calcul!

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

Discussions similaires

  1. besoin d'aide pour une requête
    Par Damien69 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 31/03/2004, 16h38
  2. besoin d'aide pour le composant DBComboBox
    Par jane2002 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/02/2004, 20h01
  3. [Kylix] besoin d'aide pour installer kylix3
    Par Sph@x dans le forum EDI
    Réponses: 3
    Dernier message: 11/02/2004, 14h53
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 11h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 18h05

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