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 :

Enregistrement données d'un userform [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 28
    Par défaut Enregistrement données d'un userform
    Bonjour Forum,

    J'ai un userform "Fournisseur" dans lequel je rentre des données.
    Pour chaque ligne de mon tableau, j'ouvre un userform via :

    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
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    'permet de réafficher le userform et rempli les champs
    'la macro repère le click (Target)
      Cancel = True
    If Target.Column = 42 Then 
     
      Fournisseur.OT.Value = Sheets("bilan").Range("B" & Target.Row).Value
      Fournisseur.Combo1.Value = Sheets("bilan").Range("DA" &Target.Row).Value 
      Fournisseur.Text1.Value = Sheets("bilan").Range("DB" & Target.Row).Value
       ...etc...
      Fournisseur.Show
     
    End If
     
    End Sub
    Jusque là tout va bien..
    Ensuite je met un bouton "Enregistrer" sur mon userform.
    J'aimerais que son utilisation me permette :
    - de repérer la ligne (Target Row) que le userform concerne et d'enregistrer les données (effacer les précédentes et inscrire les nouvelles) dans les colonnes (DA, DB,...etc..).

    Ca me paraît pas bien compliqué, mais je ne sais pas comment m'y prendre pour le repérage, l'effacement des données pré rentrée et l'incription des nouvelles.

    Merci pour votre aide!

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 258
    Par défaut
    de repérer la ligne (Target Row) que le userform concerne
    Le mieux est que ton targetrow soit une variable public (déclarée tout en haut de la page) et que tu la récupère directement dans ta macro d'enregistrement.

    et d'enregistrer les données (effacer les précédentes et inscrire les nouvelles) dans les colonnes (DA, DB,...etc..).
    le fait de réécrire dans les cases va effacer les écritures précédentes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells(targetrow, 2)=combobox1
    par exemple

  3. #3
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 28
    Par défaut
    merci pour la réponse,

    J'ai déclaré Public Target As Range

    Ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Enregistrer_Click()
    'enregistre les données renseignées dans le userform dans le tableau bilan
     
    Sheets("bilan").Range("DA" & Target.Row).Value = Fournisseur.Text1.Value
     
    End Sub
    J'ai un message d'erreur "Objet requis".
    Je ne comprends pas pourquoi?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 258
    Par défaut
    Pourrais tu mettre l'ensemble du code ?

  5. #5
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 28
    Par défaut
    Dans la feuille "bilan" (Microsoft Excel Objets) :

    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
    Public Target As Range
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    'permet de réafficher le userform et rempli les champs
    'la macro repère le click (Target)
      Cancel = True
    If Target.Column = 42 Then 'si le click se trouve dans la colonne 42 (AP)
     
      Fournisseur.OT.Value = Sheets("bilan").Range("B" & Target.Row).Value
      Fournisseur.Combo1.Value = Sheets("bilan").Range("DA" &Target.Row).Value 
      Fournisseur.Text1.Value = Sheets("bilan").Range("DB" & Target.Row).Value
     
      Fournisseur.Show
     
     
    End If
     
    End Sub
    Dans le userform "Fournisseur" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Enregistrer_Click()
    'enregistre les données renseignées dans le userform dans le tableau Bilan
     
    Sheets("bilan").Range("DB" & Target.Row).Value = Fournisseur.Text1.Value
     
    End Sub
    C'est tout pour le moment..!

  6. #6
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 28
    Par défaut
    En fait je n'arrive pas à récupérer Target dans

    Private Sub Enregistrer-Click()

    Comment récupérer ma variable dans un private sub?

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

Discussions similaires

  1. Enregistrer des données d'un Userform dans un autre classeur
    Par LinC49 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/01/2011, 17h51
  2. Enregistrement données
    Par Gebudi. dans le forum Access
    Réponses: 4
    Dernier message: 30/04/2006, 18h19
  3. Réponses: 3
    Dernier message: 27/04/2006, 10h01
  4. Ouvrir un formulaire sur un enregistrement donné
    Par gaetanc15 dans le forum Langage
    Réponses: 6
    Dernier message: 14/03/2006, 10h19
  5. Réponses: 2
    Dernier message: 04/01/2006, 21h33

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