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 saisie à adapter


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable de trafic
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de trafic

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Par défaut Formulaire de saisie à adapter
    Bonsoir à vous toutes et tous, et au Forum;

    Après échec de mes propres essais, je m'adresse à vous , en vous demandant de bien vouloir m'aider à faire adapter 2 Formulaires de saisie (UserForm) sur les 2 tableaux excel de mon fichier ci-joint.

    - 1er Formualire: c'est un formulaire d'ajout et de modification
    - 2ème Formulaire: c'est juste un formulaire simple de saisie.

    Des détails bien expliqués et bien clairs se trouvent sur le fichier ci-joint.

    Je vous remercie d’avance.
    Fichiers attachés Fichiers attachés

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

    Il est préférable de donner des explications qu'une pièce jointe que beaucoup n'ouvrirons pas pour diverses raisons (proxi, sécurité, etc...)

    Philippe

  3. #3
    Candidat au Club
    Homme Profil pro
    Responsable de trafic
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de trafic

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Par défaut
    Bonjour à vous,
    Oui, logique et raisonnable et vous avez tout à fait raison.
    Mais parfois on trouve qu'une ou deux lignes d'explication sur le fichier lui-même, est beaucoup plus clair qu'un paragraphe d'explication sur le message.

    Cordialement.

  4. #4
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut
    Citation Envoyé par ADOLL Voir le message
    Bonsoir à vous toutes et tous, et au Forum;

    ... faire adapter 2 Formulaires de saisie (UserForm) sur les 2 tableaux excel de mon fichier ci-joint.

    - 1er Formualire: c'est un formulaire d'ajout et de modification
    - 2ème Formulaire: c'est juste un formulaire simple de saisie.
    bonsoir,

    je me suis placé sur le formulaire 2, je fais la saisie des valeurs dans votre feuille paramètre et si valide sont recopiées dans la feuille Carburant.

    J'ai utilisé les controlsource de chaque box initialisé dans userform_initialise.

    j'ajoute si vous le voulez un spin pour changer de fiche et(ou) les modifier,

    voici le source :
    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
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    Private Sub CommandButton1_Click()
    If Not verif(Feuil3.Range("G19"), _
                 Feuil3.Range("I19"), Feuil3.Range("J19"), Feuil3.Range("K19")) Then
        x = MsgBox("Les sommes sont fausses !", vbOKOnly, "Attention !")
        Exit Sub
    Else
        ligne = ActiveCell.Row
        With Feuil4
            .Range("B" & CStr(ligne)) = Feuil3.Range("E19").Value
            .Range("C" & CStr(ligne)) = Feuil3.Range("F19").Value
            .Range("D" & CStr(ligne)) = Feuil3.Range("G19").Value
            .Range("E" & CStr(ligne)) = Feuil3.Range("H19").Value
            .Range("F" & CStr(ligne)) = Feuil3.Range("I19").Value
            .Range("G" & CStr(ligne)) = Feuil3.Range("J19").Value
            .Range("H" & CStr(ligne)) = Feuil3.Range("K19").Value
            .Range("J" & CStr(ligne)) = Feuil3.Range("M19").Value
        End With
    End If
    Unload Me
    End Sub
     
    Private Sub CommandButton2_Click()
    Unload Me
    End Sub
     
    Private Sub SpinButton1_SpinDown()
    Dim ligne As Integer
    Dim c As String
     
    c = TextBox1.ControlSource
    ligne = ActiveCell.Row + 1
    If ligne = 45 Then Exit Sub
     
    With Feuil4
       Feuil3.Range("E19") = .Range("B" & CStr(ligne))
       Feuil3.Range("F19") = .Range("C" & CStr(ligne))
       Feuil3.Range("G19") = .Range("D" & CStr(ligne))
       Feuil3.Range("H19") = .Range("E" & CStr(ligne))
       Feuil3.Range("I19") = .Range("F" & CStr(ligne))
       Feuil3.Range("J19") = .Range("G" & CStr(ligne))
       Feuil3.Range("K19") = .Range("H" & CStr(ligne))
       Feuil3.Range("M19") = .Range("J" & CStr(ligne))
    End With
     
    TextBox1.ControlSource = "PARAMETRE!E19"
    TextBox2.ControlSource = "PARAMETRE!F19"
    TextBox3.ControlSource = "PARAMETRE!G19"
    TextBox4.ControlSource = "PARAMETRE!H19"
    TextBox5.ControlSource = "PARAMETRE!I19"
    TextBox6.ControlSource = "PARAMETRE!J19"
    TextBox7.ControlSource = "PARAMETRE!K19"
    TextBox8.ControlSource = "PARAMETRE!M19"
     
    Feuil4.Cells(ligne, 2).Activate
     
    End Sub
     
    Private Sub SpinButton1_SpinUp()
    Dim ligne As Integer
    Dim c As String
     
    c = TextBox1.ControlSource
    ligne = ActiveCell.Row - 1
    If ligne = 9 Then Exit Sub
    With Feuil4
       Feuil3.Range("E19") = .Range("B" & CStr(ligne))
       Feuil3.Range("F19") = .Range("C" & CStr(ligne))
       Feuil3.Range("G19") = .Range("D" & CStr(ligne))
       Feuil3.Range("H19") = .Range("E" & CStr(ligne))
       Feuil3.Range("I19") = .Range("F" & CStr(ligne))
       Feuil3.Range("J19") = .Range("G" & CStr(ligne))
       Feuil3.Range("K19") = .Range("H" & CStr(ligne))
       Feuil3.Range("M19") = .Range("J" & CStr(ligne))
    End With
     
    TextBox1.ControlSource = "PARAMETRE!E19"
    TextBox2.ControlSource = "PARAMETRE!F19"
    TextBox3.ControlSource = "PARAMETRE!G19"
    TextBox4.ControlSource = "PARAMETRE!H19"
    TextBox5.ControlSource = "PARAMETRE!I19"
    TextBox6.ControlSource = "PARAMETRE!J19"
    TextBox7.ControlSource = "PARAMETRE!K19"
    TextBox8.ControlSource = "PARAMETRE!M19"
     
    Feuil4.Cells(ligne, 2).Activate
     
     
    End Sub
     
    Private Sub UserForm_Initialize()
    Dim ligne As Integer
     
    ligne = Feuil4.Range("B8").End(xlDown).Row + 1
     
    With Feuil4
       Feuil3.Range("E19") = ""
       Feuil3.Range("F19") = ""
       Feuil3.Range("G19") = ""
       Feuil3.Range("H19") = ""
       Feuil3.Range("I19") = ""
       Feuil3.Range("J19") = ""
       Feuil3.Range("K19") = ""
       Feuil3.Range("M19") = ""
    End With
     
     
    TextBox1.ControlSource = "PARAMETRE!E19"
    TextBox2.ControlSource = "PARAMETRE!F19"
    TextBox3.ControlSource = "PARAMETRE!G19"
    TextBox4.ControlSource = "PARAMETRE!H19"
    TextBox5.ControlSource = "PARAMETRE!I19"
    TextBox6.ControlSource = "PARAMETRE!J19"
    TextBox7.ControlSource = "PARAMETRE!K19"
    TextBox8.ControlSource = "PARAMETRE!M19"
    Feuil4.Cells(ligne, 2).Activate
     
    End Sub
    Function verif(ByVal s As Double, a As Double, b As Double, c As Double) As Boolean
    verif = s = a + b + c
    End Function

  5. #5
    Candidat au Club
    Homme Profil pro
    Responsable de trafic
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de trafic

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Par défaut
    Bonjour geogeo70, le forum.
    J'ai collé le code et c’était parfait
    je vous remercie vivement de votre aimable aide.

    juste je voulais qu'en lançant le formulaire, le nouveau N° d'enregistrement s'affiche automatiquement dans la case correspondante, c-à-d, si par exemple le dernier N° est 5, en lançant le formulaire 6 s'affiche automatiquement.

    Un grand merci une autre fois.

  6. #6
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut
    ...juste je voulais qu'en lançant le formulaire, le nouveau N° d'enregistrement s'affiche automatiquement dans la case correspondante, c-à-d, si par exemple le dernier N° est 5, en lançant le formulaire 6 s'affiche automatiquement...
    bonsoir,

    pour le N° on peut desactiver le box "N°" et incrémenter le numero,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If ligne = 10 Then
            .Range("E19") = 1
        Else
            .Range("E19") = Feuil4.Cells(ligne - 1, 2) + 1
        End If
    pour passer à la fiche suivante sans sortir du formulaire il suffit de supprimer le unload en fin de validation.

    J'ai travaillé sur le 1er formulaire, je vous fais la proposition :
    1) de faire une fonction qui recherche le km précédent d'uns voiture

    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
    Function derkm(ByVal codev As String) As Double
    Dim code As Range
    Dim ligne As Integer
     
    With Feuil1
        Set code = .Range(.Range("D12"), .Range("D10").End(xlDown))
    End With
    ligne = code.Count - 1
    While code.Cells(ligne, 1) <> codev And ligne > 1
        ligne = ligne - 1
    Wend
    If code.Cells(ligne, 1) = codev Then
        derkm = code.Cells(ligne, 7)
    Else
        derkm = 0
    End If
     
    End Function
    qui rend 0 si non trouvé et le km si trouvé.

    2) j'ai repris les mêmes procédés pour le reste du formulaire
    -desactivation des box de calcul (km et message...)
    -fonctionnement des combobox
    -formule de calcul des km parcourus et message calculé sur la table
    -copie de ces formules lors d'une validation
    3) il faudrait écrire la première ligne avant de lancer le formulaire, je n'ai pas fais le départ à vide (faire une procédure qui teste la première ligne).......

    A vous de travailler! Je pense vous avoir donné qques idées.

    Je vous joins le fichier (Je n'ai pas le temps de faire les commentaires) posez des questions si nécessaire.

    SUIVI_VEHICULEScor.xlsm

    geogeo70

  7. #7
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut Quelques modifs!
    bonjour,

    quelques idées supplementaires!

    Si on saisit la 1ere ligne on ne peut recopier au dessus, donc on peut écrire les formules avec la fonction .formula :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If ActiveCell.Value = "" Then
          'formule pour le trop parcouru
          .Range("O" & CStr(ligne)).Formula = _
          "=IF(N" & CStr(ligne) & ">G" & CStr(ligne) & ",""Trop parcouru"","""")"
          'formule pour distance parcourue
          .Range("N" & CStr(ligne)).Formula = _
          "=IF(B" & CStr(ligne) & "="""","""",J" & CStr(ligne) & "-H" & CStr(ligne) & ")"
       End If
    J'ai fais la saisie des "VP..") :
    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 OptionButton1_Change()
     
    With Feuil3.Range("P15")
    If Me.OptionButton1.Value Then
        .Value = "VS.1"
        Else
        If Me.OptionButton2.Value Then
        .Value = "VS.2"
        Else
        .Value = "VS.3"
        End If
    End If
    End With
     
     
    End Sub
    Et j'ai vu une erreur d'index dans la fonction derkm :
    ...
    While code.Cells(ligne, 1) <> codev And ligne > 1
    ...
    et non ligne-1

    le fichier corrigé :
    SUIVI_VEHICULEScor.xlsm

    geogeo70

Discussions similaires

  1. Adapter formulaires de saisie à différents écrans
    Par marcopolo29280 dans le forum IHM
    Réponses: 7
    Dernier message: 18/11/2008, 17h25
  2. Réponses: 4
    Dernier message: 09/02/2006, 09h36
  3. faire un formulaire de saisie
    Par navona dans le forum IHM
    Réponses: 10
    Dernier message: 07/12/2005, 15h12
  4. Réponses: 3
    Dernier message: 28/11/2005, 16h04
  5. Réponses: 3
    Dernier message: 24/02/2005, 16h48

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