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 :

Problème destination feuille avec formulaire userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Mai 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2014
    Messages : 2
    Par défaut Problème destination feuille avec formulaire userform
    Bonsoir,
    j'ai crée un userform, ou j'aimerai que quand je valide la saisie, les renseignements présents sur le formulaire s'inscrivent dans ma feuille stock sur la première ligne vide qu'il rencontre. Jusque là j'ai réussi à peu près a atteindre mon objectif, à une grosse nuance près c est que c'est pas la bonne feuille ou les renseignements s'inscrivent, ça va à la bonne ligne, mais sur la première feuille de mon classeur, "accueil" en l’occurrence.
    Là ça dépasse mes modestes compétences de novice.
    Merci de votre aide.
    Voici le code que j'ai inscrit.

    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
    Private Sub VALIDATIONENTREE_Click()
        Dim i As Integer
    If entrée.marque = "" Or entrée.designation = "" Or entrée.teinte = "" Or entrée.quantité = "" Or entrée.péremption = "" Then
        MsgBox "Merci de remplir tous les champs"
        Else
        i = 3
        Do While Worksheets("stock").Cells(i, 2) <> ""
        Cells(i, 2).Offset(1, 0).Select
        i = i + 1
        Loop
        ActiveCell.Value = entrée.marque.Value
        ActiveCell.Offset(0, 1).Value = entrée.designation.Value
        ActiveCell.Offset(0, 2).Value = entrée.teinte.Value
        ActiveCell.Offset(0, 3).Value = entrée.quantité.Value
        ActiveCell.Offset(0, 4).Value = entrée.péremption.Value
        Unload entrée
        End If
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution possible avec ce code :

    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
    Private Sub VALIDATIONENTREE_Click()
     
    Dim LigneDeTitre As Long
    Dim DerniereLigne As Long
     
        If Marque = "" Or designation = "" Or Teinte = "" Or Quantité = "" Or Péremption = "" Then
           MsgBox "Merci de remplir tous les champs !", vbCritical, "Contrôle de la saisie"
           Exit Sub
        End If
     
        If Not IsDate(Péremption) Then
           MsgBox "La valeur n'est pas une date !", vbCritical, "Contrôle de la saisie dans le champ Péremption"
           Exit Sub
        End If
     
        With Worksheets("stock")
     
             LigneDeTitre = 2
             DerniereLigne = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
     
             If DerniereLigne > LigneDeTitre Then
                With .Cells(DerniereLigne, 2)
                     .Value = Marque
                     .Offset(0, 1) = designation
                     .Offset(0, 2) = Teinte
                     With .Offset(0, 3)
                          .Value = CDbl(Quantité)
                     End With
                     With .Offset(0, 4)
                          .Value = CDate(Péremption)
                          .NumberFormat = "dd/mm/yyyy"
                     End With
                End With
             End If
     
        End With
     
        Unload Entrée
     
    End Sub
    Vous pouvez éventuellement ajouter ces lignes de code dans votre userform pour contrôler la saisie dans les champs Quantité et Péremption :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Quantité_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
            If InStr("1234567890,", Chr(KeyAscii)) = 0 Then KeyAscii = 0
    End Sub
     
    Private Sub Péremption_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
            If InStr("1234567890/", Chr(KeyAscii)) = 0 Then KeyAscii = 0
    End Sub
    Nb : Pour la portabilité de vos outils, vous devriez nommer vos objets sans caractères accentués. Votre Userform s'appellerait : Entree, vos champs : Quantite, Peremption.

    Cordialement.

Discussions similaires

  1. [XL-2003] Problème d'affichage avec un UserForm d'attente pendant une macro ?
    Par [ZiP] dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/02/2010, 11h28
  2. [AC-2007] problème de code avec formulaire
    Par elric dans le forum IHM
    Réponses: 8
    Dernier message: 03/12/2009, 05h33
  3. [MySQL] Problème d'insertion avec formulaire
    Par Snowwolf dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 11/03/2008, 16h38
  4. Problème d'accents avec Formulaire
    Par MicaelFelix dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/05/2007, 20h39
  5. Problème d'accent avec formulaire cgi
    Par vodevil dans le forum Web
    Réponses: 3
    Dernier message: 15/04/2006, 11h48

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