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 :

Userform pour complèter un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Novembre 2014
    Messages : 7
    Points : 0
    Points
    0
    Par défaut Userform pour complèter un tableau
    Bonjour,

    J'essaie depuis un bon bout de temps de créer un formulaire (userform) qui incrémentes les différentes cellules de mon tableau. J'ai suivi différents tuto avec lesquels j'ai pas mal compris comment réaliser ce genre de formulaire.
    Cependant, je suis incapable de faire le code en VBA...

    j'ai réaliser les deux Userform que je souhaitait.

    Pouvez vous réaliser les codes correspondant ?

    Je joint un fichier exemple qui explique clairement ma demande et où j'ai reproduit les deux formulaires.

    Merci beaucoup,
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour,

    Ce que vous nous demandez c'est de développer une application complète. Là on ne peut vraiment pas. De plus votre projet manque un peu de précision.
    Pouvez-vous essayer de nous donner un peu plus ? On a toujours un code sous la main, mais lorsque la demande est précise la réponse l'est également.
    Merci par avance
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Novembre 2014
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    J'ai essayé d'être le plus claire possible dans le fichier en pièce jointe. Désolé si ce n'est pas assez claire.

    Finalement j'ai réussi à faire fonctionner mon USF 1.En revanche je n'arrive pas à réaliser l'USF 2.

    Mon USF 1 me permet d'ajouter un projet dans un tableau.
    L'USF 2 doit permettre d'ajouter un sous projet correspondant à un projet :
    PROJET (Colonne C)
    SOUS PROJET 1
    (Colonne D)
    SOUS PROJET 2
    (Colonne D)

    Pour mon USF 2, j'ai réaliser un code qui permet de sélectionner le nom du projet. Il s'agit d'une liste déroulante qui reprend toutes les information contenues en colonne C.

    Ma question est donc maintenant la suivante : comment faire pour que lors de la validation du formulaire, les données soient ajoutés dans une nouvelle ligne qui se trouve
    en dessous de la ligne qu'on à sélectionnée avec la liste déroulante de l'USF ?

    J'ai tenté Rows(Lign = ComboBox1.ListIndex + 3).Insert sans résultat...


    Voici mon code pour l'USF 2 ;



    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
     Private Sub UserForm_Initialize()
     
     ComboBox2.List = Array("Investigation", "En cours", "Clôturer")
     
     
     With Sheets("Sheet1")
     
     For n = 2 To .Range("C65535").End(xlUp).Row
     ComboBox3.AddItem .Cells(n, 3).Value
     
     Next n
     
     End With
     
     End Sub 
     
    --------------------------------------------------------------
     
    Private Sub CommandButton1_Click()
    If TextBox5 = "" Or TextBox2 = "" Then
    MsgBox ("Vous devez remplir les champs")
    Exit Sub
    End If
    derligne = Range("B65535").End(xlUp).Row + 1
    Cells(derligne, 2) = ComboBox2
    Cells(derligne, 4) = TextBox5
    Cells(derligne, 5) = TextBox2
    Cells(derligne, 6) = TextBox3
    Cells(derligne, 7) = TextBox4
    Cells(derligne, 8) = DTPicker1
    Cells(derligne, 9) = DTPicker2
    Unload Me


    En PJ le fichier en question. (Fichier test pour m'essayer...)

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Voici un bout de code que vous pouvez arranger pour votre projet.

    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
     
    Private Sub CmbOK_Click()
    Dim vMessageErreur As String
    Dim vErreur As Integer
    Dim vOperationNum As Long
    vMessageErreur = ""
    vErreur = 0
     
    'Affiche un message d'erreur si les éléments suivants sont manquants
    If FrmSaisie.CmbEtab.Value = "" Then
        vErreur = 1
        vMessageErreur = vMessageErreur + Chr(10) + "L'établissement"
    End If
    If FrmSaisie.TxtLieu = "" Then
        vErreur = 1
        vMessageErreur = vMessageErreur + Chr(10) + "Le lieu des travaux"
    End If
    If FrmSaisie.TxtDem = "" Then
        vErreur = 1
        vMessageErreur = vMessageErreur + Chr(10) + "Le demandeur"
    End If
    If FrmSaisie.TxtDétail = "" Then
        vErreur = 1
        vMessageErreur = vMessageErreur + Chr(10) + "Le détail des travaux"
    End If
    If vErreur = 1 Then
        MsgBox "Vous avez oublié" + vMessageErreur, , "Erreur"
    Exit Sub
    End If
    'Active la feuille Demande
    Sheets("Demande").Activate
     
    'Commence la saisie à partir de la cellule A3
    If Range("A3") = "" Then
        Range("A3").Select
        vOperationNum = 1
    Else
        Range("A2").End(xlDown).Select
        vOperationNum = Selection.Value + 1
        ActiveCell.Offset(1, 0).Range("A1").Select
    End If
    'Remplie les cellules du tableau
    ActiveCell.Value = vOperationNum
    ActiveCell.Offset(0, 1).Value = (FrmSaisie.TxtOpé)
    ActiveCell.Offset(0, 2).Value = (FrmSaisie.TxtInter)
    ActiveCell.Offset(0, 3).Value = (FrmSaisie.TxtDate1)
    ActiveCell.Offset(0, 3).Value = Format(TxtDate1, "mm/dd/yyyy")
    ActiveCell.Offset(0, 4).Value = (FrmSaisie.TxtNom)
    ActiveCell.Offset(0, 5).Value = (FrmSaisie.TxtDem)
    ActiveCell.Offset(0, 6).Value = FrmSaisie.CmbEtab.Value
    ActiveCell.Offset(0, 9).Value = (FrmSaisie.TxtLieu)
    ActiveCell.Offset(0, 10).Value = (FrmSaisie.TxtDétail)
    ActiveCell.Offset(0, 13).Value = FrmSaisie.CmbInt.Value
    If FrmSaisie.ChkFerm.Value = True Then ActiveCell.Offset(0, 15).Value = "X"
    Unload FrmSaisie
    Exit Sub
    End Sub
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Novembre 2014
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    Merci beaucoup,

    Cependant mes connaissances en VBA sont très proche du néant. Je suis donc perdu dans ce code dont je ne vois pas l'utilité pour moi :/

    Qu'est ce qui me permet d'insérer une nouvelle ligne sous une autre que j'ai au préalable sélectionné dans la ComboBox (liste déroulante qui reprend le contenu de la colonne D) ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    tu as raison c'est pas utile même pour nous

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Novembre 2014
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    Et vous ? Allez vous, vous rendre utile ?

  8. #8
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonsoir,

    J'ai juste voulu rendre service, je me suis peut-être trompé dans la compréhension de la demande.

    Dommage d'avoir étais inutile !!!!
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Novembre 2014
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    Vous essayer de m'aider et c'est louable. Je ne vous critique pas. Moi je ne me serais pas permis de dire que vous êtes inutile surtout que c'est surement moi qui ne suis pas assez explicite.

    Bref, on résume. Moi je ne connais rien du tout en VBA. Je récupère juste des codes à gauches et droites et essaie de les adapter pour mon usage.

    J'ai quasiment tout réussi.

    Mon fichier ce compose de deux formulaire :
    - Un pour ajouter un projet
    - Un autre pour ajouter un sous projet. Un sous projet est toujours lié à un projet.

    Les formulaire remplissent les champs de mon tableaux.

    Pour le formulaire des sous projets, on choisit dans une liste déroulante le projet auxquel il appartient.

    Ce que je souhaite c'est un code qui permet d'ajouter les données du formulaire dans une nouvelle ligne. Cette nouvelle ligne s'ajouterai juste en dessous de la ligne du projet sélectionné dans la liste déroulante

    En pièce jointe mon fichier : ma demande y est clairement expliqué avec un exemple.

    Merci beaucoup, c'est important pour moi.
    Fichiers attachés Fichiers attachés

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par luvill Voir le message
    Et vous ? Allez vous, vous rendre utile ?
    Non, je suis moins indulgent que NEC14; nous passons beaucoup de temps pour venir en aide à nos concitoyens, le minimum est de le reconnaître.

    je suis intervenu car je pensai que ta formulation était malheureuse mais ta réponse confirme que non!

    de plus je n'ai pas dit que nous étions inutiles, mais que ta macro ne nous est pas utile!

    il y a d'autres personne à voir!

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Novembre 2014
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    Je dis pas le contraire. En revanche je ne comprend pourquoi vous ne m'aiderez pas ?
    Vous avez la connaissance et je suis sure que vous avez déjà la réponse. Lisez-bien la demande et vous comprendrez que mon bout de code n'est pas inutile. La question porte justement sur ce code là. Je pensais faciliter la comprehension on illustrant mes propos par le code que j'avais éssayer de réaliser par moi même.

    Je ne suis pas là pour que vous faisiez tous le travail pour moi. Bien au contraire, je cherche énorménent dans les autres sujets et sur google. Si je suis venu ici c'est parce que je ne trouve vraiment pas la solution.
    J'ai réussi à faire 90% de travail par moi-même. Je vous demande juste de m'aider pour les 10% restant...

    Maintenant, si vous avez passez une mauvaise journée c'est pas de ma faute, pas besoin de "me mettre à la porte". Je ne pense pas que ce soit l'esprit de ce forum...

    D'ailleur, je pense que le code que ma fournit NEC14 ne m'aidais pas dans ma demande expliqué dans un deuxième temps. J'ai juste expliqué que je n'avais pas beaucoup de connaissance en VBA et que je comprenais pas tous ce code...
    Excusez-moi de ne pas être assez bon à vos yeux... mais je pense qu'on à tous commencé un jour...

  12. #12
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,


    Citation Envoyé par luvill Voir le message
    J'ai réussi à faire 90% de travail par moi-même. Je vous demande juste de m'aider pour les 10% restant...

    mais je pense qu'on à tous commencé un jour...
    Tous ceux qui ont commencé un jour, ont utilisé l'enregistreur de macros.

    Tu sélectionnes la première cellule de ton tableau

    Tu cliques sur Enregistrer une macro dans le ruban Développeur

    Tu fais Ctrl + Flèche vers le bas.
    Là je ne me souviens plus si tu vas arriver sur la première ligne vide ou la dernière ligne pleine. Au pire tu appuies sur la flèche vers le bas.
    Tu cliques sur Arrêter l'enregistrement.

    Et voilà, tu as le code pour atteindre la première ligne vide.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Novembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Novembre 2014
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    Merci d'apporter votre contribution.

    Je connais les macros que depuis peu de temps. L'astuce avec l'enregistreur de macro c'est bien, mais ne me permet pas de faire ce que je recherche :

    Dans mon formulaire, j'ai créer une liste déroulante (ComboBox) afin de choisir le projet auxquel appartient le sous projet. Ainsi, ce que je souhaite, c'est un code VBA qui permet d'ajouter les données du formulaire dans une nouvelle ligne. Cette nouvelle ligne s'ajouterai juste en dessous de la ligne du projet sélectionné dans la liste déroulante.

    L'idée c'est de pouvoir insérer un Sous projet à n'importe quel moment. Tous les sous projet appartienne à un projet. Car les formulaires complète de défaut la ligne suivante à chaque nouvel validation.

    J'ai tenté Rows(Lign = ComboBox1.ListIndex + 3).Insert sans résultat...

    Je l'explique très bien dans ce fichier :
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2007] Problème pour compléter un tableau
    Par PSAIMOND dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 25/11/2014, 15h38
  2. Création d'une macro pour compléter un tableau
    Par bingo65 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/08/2014, 14h22
  3. besoin d'aide sur un tableau userforme pour inventaire
    Par isabelle.sanchez dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 16/05/2014, 15h52
  4. Tableau dans userform pour remplacer Spreadsheet
    Par polkovak dans le forum VB.NET
    Réponses: 0
    Dernier message: 29/09/2011, 09h53
  5. Userform pour completer tableau
    Par Fadafana dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/01/2008, 16h25

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