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 :

Valider données saisies dans un USERFORM


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Par défaut Valider données saisies dans un USERFORM
    Bonjour à tous,

    J'essaye actuellement de gérer un petit planning de réservation de chambre à l'aide d'un userform.
    Grâce à l'aide d'internet j'ai réussi à faire pas mal de choses (éviter double réservations, gestion des chambres...etc)

    Cependant je rencontre encore un petit problème et cela va faire plusieurs heures que je trîme. La saisie des visiteurs se fait à l'aide d'un Userform, ce userform venant compléter un onglet journal (qui contient un tableau tout bête) qui lui même agit sur le planning (le planning quand à lui..ressemble à un planning). Lorsque je valide le Userform les bonnes cases viennent se compléter dans le journal sauf que voilà : les données saisies ne sont pas prises en compte et il faut que je revienne double cliquer et faire entrer sur les cellules modifiées journal. J'aimerais que cela se fasse automatiquement.

    J'ai essayé d'enregistrer F2 + Enter avec l'enregistreur de macro mais cela ne résoud pas le problème.
    J'ai essayé les sendkeys mais sans succès (m'y suis-je peut être mal pris)

    Je voudrais donc avoir votre avis, si quelqu'un peut m'aider ou me rediriger.



    Merci à tous !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Par défaut
    Bonjour,

    Afficher ton code plutôt que de mettre ton fichier en pièce jointe sera bien plus efficace si tu souhaite obtenir de l'aide.
    Pas testé, tu peux essayer ça après ta validation de données.

    Bonne continuation,

  3. #3
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Bonjour A vous,

    J'ai pas bien compris ton problème, mais voici une ébauche de ton code revue avec des userform nommés comme ils se doivent, ainsi que textbox, combox etc...

    J'ai également supprimé un usf "Valider" et remplacé par un Msgbox

    A toi de voir et revient nous dire

    Voici le fichier en PJ



    Seb

  4. #4
    Membre averti
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Septembre 2014
    Messages : 19
    Par défaut
    Bonjour à vous et merci pour vos aides.
    Pour être plus précis :
    Lorsque l'on rentre des données à la main dans l'onglet journal ces données viennent remplir le planning contenu dans l'onglet "planning" et les jours de réservations se colorent.
    Lorsque je passe par un userform les données viennent bien dans l'onglet journal mais elles ne sont pas prises en compte dans l'onglet "planning".

    J'ai essayé cette nouvelle version que vous m'avez fait parvenir (merci beaucoup d'ailleurs d'avoir cleané mon code) ainsi que le "Application.Calculate" et ce, sans succès. Donc je suis encore à la recherche d'une aide :/ (merci beaucoup déjà de ce que vous avez fait)

    Je vous joins le code cleané par SebPhyto afin que vous puissiez m'aider:

    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
     
    Private Sub CmBEnvoyer_Click()
    Dim Derlign As Long
    Dim Lig As Long
     
     
    TBArrivee.Value = Format(TBArrivee.Value, "dd/mm/yy")
    TBDepart.Value = Format(TBDepart.Value, "dd/mm/yy")
     
    If Me.CBoxMaintenance.Value = True Then
     
    With Worksheets("journal")
    Derlign = .Range("a65536").End(xlUp).Row + 1
                .Cells(Derlign, 1).Value = TBArrivee
                .Cells(Derlign, 2).Value = TBDepart
                .Cells(Derlign, 3).Value = "Maintenance"
                .Cells(Derlign, 4).Value = "Maintenance"
                .Cells(Derlign, 6).Value = CBChambre
                .Cells(Derlign, 8).Value = "Maintenance"
     
    End With
     
    End If
     
    If Me.CBoxMenage.Value = True Then
     
    With Worksheets("journal")
    Derlign = .Range("a65536").End(xlUp).Row + 1
                .Cells(Derlign, 1).Value = TBArrivee
                .Cells(Derlign, 1).Activate
                .Cells(Derlign, 2).Value = TBDepart
                .Cells(Derlign, 2).Activate
                .Cells(Derlign, 3).Value = "Maintenance"
                .Cells(Derlign, 4).Value = "Maintenance"
                .Cells(Derlign, 6).Value = CBChambre
                .Cells(Derlign, 8).Value = "Maintenance"
     
       End With
    End If
     
    With Worksheets("journal")
    Derlign = .Range("a65536").End(xlUp).Row + 1
                .Cells(Derlign, 1).Value = TBArrivee
                ActiveCell.FormulaR1C1 = TBArrivee
                .Cells(Derlign, 2).Value = TBDepart
                ActiveCell.FormulaR1C1 = TBDepart
                .Cells(Derlign, 3).Value = TBNom
                .Cells(Derlign, 4).Value = TBPrenom
                .Cells(Derlign, 6).Value = CBChambre
                .Cells(Derlign, 8).Value = TBIdVisiteur
    End With
     
    rep = MsgBox("Voulez-vous confirmer la saisie du nouveau client?", vbYesNoCancel + vbExclamation + vbDefaultButton2, "Validation des données")
     
    If rep = vbYes Then
     
        Unload Me 'on ferme userform
    Else
        If rep = vbNo Then
     
            With Worksheets("journal")
                Lig = .Range("A" & Rows.Count).End(xlUp).Row
                    .Cells(Lig, 1).Value = ""
                    .Cells(Lig, 2).Value = ""
                    .Cells(Lig, 3).Value = ""
                    .Cells(Lig, 4).Value = ""
                    .Cells(Lig, 6).Value = ""
                    .Cells(Lig, 8).Value = ""
            End With
     
            UsfSaisieNouv.Hide
     
        End If
     
    End If
     
    'UsfValider.Show
     
       End Sub
    Merci d'avance

  5. #5
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Re,

    Pourrais-tu mettre de l'ordre dans tes mise en forme conditionnelle???

    Car c le capharnaüm!!!!

    Pourquoi deux feuilles "planning" et "mai", comment génères-tu le feuille "Mai", tu l'as crée chaque mois, ou elle se créait toute seule?

    Tu voudrais que lors de la saisie dans usf, la feuille "Mai" ou "planning" (à toi de dire laquelle???) se remplisse en fonction de la feuille "journal"?

    Pour info, Je t'ai rajouter un bouton "Nouveau Client" sur la feuille "Journal"

    Pour ce qui est du "Click-droit" pour savoir qui, je ne me suis pas encore penché dessus, mais à ce que je peux voir, tu as 2 feuilles de planning:
    - feuil1 "planning"
    - feuil2 "Mai"

    Mais tu utilises laquelle en faite??

    Seb, je reviens vers toi après tes explications!!!!!

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Par défaut
    Bonjour,

    Je me contente ici de répondre à ta problématique première.

    Ton fichier ne fonctionne pas car le format d'écriture dans les cases n'est pas le bon.

    Voici ton code corrigé mais il reste des choses à faire (gérer le annuler pas exemple...).

    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
     
     
    Private Sub UsfSaisieNouv_Initialize()
          Me.CBChambre.RowSource = "planning!num_chambre"
    End Sub
     
    Private Sub CmBEnvoyer_Click()
        Dim Derlign As Long
        Dim Lig As Long
        Dim Sh_Journal As Excel.Worksheet
        Dim Rep As Integer
     
        ThisWorkbook.Activate
        Set Sh_Journal = ThisWorkbook.Sheets("journal")
     
        TBArrivee.Value = Format(TBArrivee.Value, "dd/mm/yy")
        TBDepart.Value = Format(TBDepart.Value, "dd/mm/yy")
     
        If Me.CBoxMaintenance.Value = True Then
            Derlign = Sh_Journal.Range("a65536").End(xlUp).Row + 1
            Sh_Journal.Cells(Derlign, 1).Value = CDate(TBArrivee)
            Sh_Journal.Cells(Derlign, 2).Value = CDate(TBDepart)
            Sh_Journal.Cells(Derlign, 3).Value = "Maintenance"
            Sh_Journal.Cells(Derlign, 4).Value = "Maintenance"
            Sh_Journal.Cells(Derlign, 6).Value = CInt(CBChambre)
            Sh_Journal.Cells(Derlign, 8).Value = "Maintenance"
        End If
     
        If Me.CBoxMenage.Value = True Then
            Derlign = Sh_Journal.Range("a65536").End(xlUp).Row + 1
            Sh_Journal.Cells(Derlign, 1).Value = CDate(TBArrivee)
            Sh_Journal.Cells(Derlign, 2).Value = CDate(TBDepart)
            Sh_Journal.Cells(Derlign, 3).Value = "Menage"
            Sh_Journal.Cells(Derlign, 4).Value = "Menage"
            Sh_Journal.Cells(Derlign, 6).Value = CInt(CBChambre)
            Sh_Journal.Cells(Derlign, 8).Value = "Menage"
        End If
     
        Derlign = Sh_Journal.Range("a65536").End(xlUp).Row + 1
        Sh_Journal.Cells(Derlign, 1).Value = CDate(TBArrivee)
        Sh_Journal.Cells(Derlign, 2).Value = CDate(TBDepart)
        Sh_Journal.Cells(Derlign, 3).Value = TBNom
        Sh_Journal.Cells(Derlign, 4).Value = TBPrenom
        Sh_Journal.Cells(Derlign, 6).Value = CInt(CBChambre)
        Sh_Journal.Cells(Derlign, 8).Value = TBIdVisiteur
     
        Rep = MsgBox("Voulez-vous confirmer la saisie du nouveau client?", vbYesNoCancel + vbExclamation + vbDefaultButton2, "Validation des données")
     
        If Rep = vbYes Then
            Unload Me 'on ferme userform
        Else
            If Rep = vbNo Then
                Lig = Sh_Journal.Range("A" & Rows.Count).End(xlUp).Row
                Sh_Journal.Cells(Lig, 1).Value = ""
                Sh_Journal.Cells(Lig, 2).Value = ""
                Sh_Journal.Cells(Lig, 3).Value = ""
                Sh_Journal.Cells(Lig, 4).Value = ""
                Sh_Journal.Cells(Lig, 6).Value = ""
                Sh_Journal.Cells(Lig, 8).Value = ""
                UsfSaisieNouv.Hide
            End If
        End If
     
        'UsfValider.Show
    End Sub
    Bonne continuation.

    N'oublie pas le si c'est ok pour toi. Un nous encourage .

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

Discussions similaires

  1. Réponses: 25
    Dernier message: 12/04/2007, 12h32
  2. Recuperer les données saisie dans un formulaire
    Par hunzi dans le forum XMLRAD
    Réponses: 3
    Dernier message: 29/08/2006, 16h22
  3. [debutant]probleme de recupération de données saisies dans une JDialog
    Par melodie53 dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 07/08/2006, 17h32
  4. récupérer des données saisies dans un fichier
    Par natie_49 dans le forum C++
    Réponses: 6
    Dernier message: 24/11/2005, 12h29
  5. Réponses: 8
    Dernier message: 19/05/2005, 17h03

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