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 :

formulaire de saisi "ajouter une idée"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2019
    Messages : 4
    Par défaut formulaire de saisi "ajouter une idée"
    Bonjour a tous !!
    je suis débutante dans le VBA et j'ai besoin de votre aide
    je voudrai faire un formulaire de saisi "ajouter une idée" avec nom,prénom, date et idée et automatiquement quand on enregistre sa remplisse un tableau .
    j'ai récupérer un formulaire du net mais je n'arrive pas a enlever le champs de texte "doublons" et le 1er champs "frapper premiere lettre" sans tout casser !!
    mon excel en pj
    Merci pour toute l'aide que vous pourrez m'apporter
    bonne journée ;
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Pas d'ouverture de classeur au 1er post. C'est la règle.

    Pourquoi ne pas créer ton propre formulaire contenant 3 zones de texte et un bouton de commande dont l'activation entrînera
    - la mise à jour de la 1ère ligne vide de la base de données
    - la désactivation du formulaire

    Tu peux consulter les 2 tutoriels à cet effet dans l'espace documentaire de Silkyroad

    Ensuite, reviens avec le(s) code(s) complet(s) de ton formulaire en précisant le(s) point(s) d'achoppement éventuel(s)

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par elio55 Voir le message
    je voudrai faire un formulaire de saisi "ajouter une idée" avec nom,prénom, date et idée et automatiquement quand on enregistre sa remplisse un tableau .
    Quand on crée un UserForm, le première question à se poser est "pourquoi ?".
    Plus explicitement, il faut se demander si le fait de faire une saisie dans un popup apporte une réelle plus-value à la saisie en cellule.
    Pour l'instant, dans mon expérience personnelle (qui n'a absolument prétention à se croire universelle), dans tous les cas je me suis rendu compte qu'au contraire, l'impact était négatif : ergonomie et réactivité moins bonne et suppression de nombreuses possibilités existant dans la saisie en cellule (copier/coller, MFC, Validation de donnée). Sans parler du développement de lignes de code.

    Donc, prends un peu de recul pour bien y réfléchir avant de t'y lancer.

    mon excel en pj
    Beaucoup de participants n'ouvrent pas les fichiers joints. https://www.developpez.net/forums/d8...s-discussions/
    Il serait donc préférable de copier le code dans un message (de préférence avec des balises CODE) et de signaler quelle partie pose problème.

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonsoir,

    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
    77
    78
    79
    80
    81
    82
    83
    84
    Option Compare Text
    Dim f, TblClé(), nbCol, ligneEnreg, colCle
    Private Sub UserForm_Initialize()
      Set f = Sheets("BD")
      colCle = 1                                  ' adapter
      nbCol = f.[iv1].End(xlToLeft).Column
      For k = nbCol + 1 To 26: Me("textbox" & k).Visible = False: Next k
      '--
      n = f.[a65000].End(xlUp).Row - 1
      Set d = CreateObject("scripting.dictionary")
      a = f.Range("a2:a" & f.[a65000].End(xlUp).Row).Offset(, colCle - 1).Value
      For i = 1 To UBound(a)
        If Not d.exists(a(i, 1)) Then d(a(i, 1)) = i + 1
      Next i
      ReDim TblClé(1 To d.Count, 1 To 2)
      i = 0
      For Each c In d.keys
        i = i + 1: TblClé(i, 1) = c: TblClé(i, 2) = d(c)
      Next c
      Call Tri2Col(TblClé, LBound(TblClé), UBound(TblClé))
      Me.ComboBox1.List = TblClé
      Me.ComboBox1.ListIndex = -1
      '-- labels textbox & largeur textbox
       For i = 1 To nbCol
          Me("textbox" & i).Width = f.Columns(i).Width * 1.1
          Set Lab = Me.Controls.Add("Forms.Label.1")
          Lab.Caption = f.Cells(1, i)
          Lab.Top = Me("textbox" & i).Top + 5
          Lab.Left = Me("textbox" & i).Left - 75
          x = x + f.Columns(k).Width * 0.5
       Next
       'For i = nbCol + 1 To 26: Me("textbox" & i).Visible = False: Next
       ligneEnreg = f.[a65000].End(xlUp).Row + 1
       Me.NoEnreg = ligneEnreg
    End Sub
     
    Private Sub ComboBox1_Click()
      ligneEnreg = Me.ComboBox1.Column(1)
      Me.NoEnreg = ligneEnreg
      For Z = 1 To nbCol
        Me("textbox" & Z) = f.Cells(ligneEnreg, Z)
      Next Z
    End Sub
     
    Private Sub B_modif_Click()
        If Me.TextBox1 = "" Or ligneEnreg = 0 Then Me.TextBox1.SetFocus: Exit Sub
         For k = 1 To nbCol
            tmp = Me("TextBox" & k)
            If IsNumeric(tmp) Then tmp = CDbl(tmp)
            If IsDate(tmp) Then tmp = CDate(tmp)
            f.Cells(ligneEnreg, k) = tmp
        Next k
        raz
        ligneEnreg = f.[a65000].End(xlUp).Row + 1
        Me.NoEnreg = ligneEnreg
        UserForm_Initialize
        Me.ComboBox1.ListIndex = -1
        Me.ComboBox1.SetFocus
    End Sub
     
    Private Sub B_nouv_Click()
      ligneEnreg = f.[a65000].End(xlUp).Row + 1
      raz
      Me.NoEnreg = ligneEnreg
      Me.TextBox1.SetFocus
    End Sub
     
    Private Sub B_sup_Click()
     If MsgBox("Etes vous sûr de suppimer " & Me.TextBox1 & "?", vbYesNo) = vbYes Then
       f.Cells(ligneEnreg, 1).Resize(, nbCol).Delete Shift:=xlUp
       raz
       UserForm_Initialize
     End If
    End Sub
     
    Sub raz()
      Dim c As Control
      For Each c In Me.Controls
        Select Case TypeName(c)
          Case "TextBox"
            c.Value = ""
        End Select
      Next c
    End Sub

    Boisgontier
    Fichiers attachés Fichiers attachés

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous, Bonjour au Forum,

    Quand on crée un UserForm, le première question à se poser est "pourquoi ?".
    Plus explicitement, il faut se demander si le fait de faire une saisie dans un popup apporte une réelle plus-value à la saisie en cellule.
    Pour l'instant, dans mon expérience personnelle (qui n'a absolument prétention à se croire universelle), dans tous les cas je me suis rendu compte qu'au contraire, l'impact était négatif : ergonomie et réactivité moins bonne et suppression de nombreuses possibilités existant dans la saisie en cellule (copier/coller, MFC, Validation de donnée). Sans parler du développement de lignes de code
    J'aurais un avis plus nuancé.
    Sans vouloir m'étendre sur le sujet, je dirais que la saisie par formulaire offre aussi des avantages, notamment quant à
    - l'ergonomie
    - la validation des données (même si celle-ci peut être normée par le tableur).
    - les évènements qui y sont liés, mieux gérables à mon sens que ceux liés à une feuille de travail

    Si notre amie peut trouver ici l'occasion d'appréhender les formulaires, alors ce peut être un bon exercice.

    Pour Jacques, je n'ai pas la prétention de juger son code mais il me semble parfait, comme d'habitude.
    Son espace documentaire en général, sur les dictionnaires en particulier, reste à mon niveau (modeste par rapport au sien) une référence.
    Respect.
    Juste un détail. Sauf dans l'hypothèse où je ne serais pas réveillé, je ne vois pas la procédure Tri2.
    Serait-ce le fameux "gauche droite", dans lequel d'ailleurs je me mélange bien souvent les pinceaux?

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    >Serait-ce le fameux "gauche droite", dans lequel d'ailleurs je me mélange bien souvent les pinceaux?

    C'est la classique Quick-sort

    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
    Sub Tri2Col(a(), gauc, droi)  ' Quick sort
      ref = a((gauc + droi) \ 2, 1) & a((gauc + droi) \ 2, 2)
      g = gauc: d = droi
      Do
        Do While a(g, 1) & a(g, 2) < ref: g = g + 1: Loop
        Do While ref < a(d, 1) & a(d, 2): d = d - 1: Loop
        If g <= d Then
           For k = LBound(a, 2) To UBound(a, 2)
             temp = a(g, k): a(g, k) = a(d, k): a(d, k) = temp
           Next k
           g = g + 1: d = d - 1
        End If
      Loop While g <= d
      If g < droi Then Call Tri2Col(a, g, droi)
      If gauc < d Then Call Tri2Col(a, gauc, d)
    End Sub

    Boisgontier

  7. #7
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut Jacques.
    C'est bien ce que j'entendais.
    Bonne journée.

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

Discussions similaires

  1. [Débutant] Formulaire de saisie à partir d'une sélection issue de listes déroulantes
    Par ptite-ratte dans le forum ASP.NET MVC
    Réponses: 18
    Dernier message: 26/02/2016, 11h36
  2. QGIS : lenteur pour afficher les listes des vues dans &quot;Ajouter une table PostGIS&quot;
    Par fafa63 dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 11/07/2014, 19h04
  3. [AC-2003] Formulaire de saisie basée sur une requete
    Par Kallamou dans le forum IHM
    Réponses: 1
    Dernier message: 20/11/2009, 13h58
  4. Réponses: 5
    Dernier message: 03/07/2007, 10h25
  5. [MySQL] formulaire et double quotes
    Par matio dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/03/2007, 17h34

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