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 :

Aide sur un code


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Aide sur un code
    Bonjour,
    Je me suis mis cette semaine à la programmation pour les nécessités de mon travail. Grâce aux diverses conseils et astuces, j'ai pu grandement avancé mais malheureusement, je bloque depuis hier. Le problème doit être mineur mais n'étant pas encore familier, je m'y perds un peu.
    Mon formulaire a pour but l'enregistrement de virement. Il peut y avoir au minimum 2 virements et au maximum 5.
    Pour le 1er enregistrement, tout est impeccable. Mais ensuite, les choses se gâtent car le débit et le crédit ne se placent pas au bon endroit.
    Si quelqu'un peut m'orienter dans ma démarche ça serait sympa. Je vous remercie par avance.
    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
    Private Sub CommandButton1_Click()
     
    'Erreur identifiant
    If Controls("comboBox1") = "" Then
    MsgBox "Vous devez entrer un identifiant!", vbExclamation, "ERREUR"
    Controls("combobox1").SetFocus
    Exit Sub
    End If
     
    'Erreur budget
    If Controls("comboBox2") = "" Then
    MsgBox "Vous devez spécifier le budget!", vbExclamation, "ERREUR"
    Controls("comboBox2").SetFocus
    Exit Sub
    End If
     
    'Erreur date
    If Controls("TextBox1") = "" Then
    MsgBox "Vous devez entrer la date!", vbExclamation, "ERREUR"
    Controls("TextBox1").SetFocus
    Exit Sub
    End If
     
    'Erreur virement
    If Controls("TextBox2") = "" Then
    MsgBox "Vous devez entrer le N° de virement!", vbExclamation, "ERREUR"
    Controls("TextBox2").SetFocus
    Exit Sub
    End If
     
    'Erreur imputation 1
    If Controls("TextBox3") = "" Then
    MsgBox "Vous devez spécifier une clé d'imputation!", vbExclamation, "ERREUR"
    Controls("TextBox3").SetFocus
    Exit Sub
    End If
     
    'Erreur mouvement 1
    If Controls("TextBox22") = "" And Controls("TextBox23") = "" Then
    MsgBox "Vous devez spécifier un mouvement!", vbExclamation, "ERREUR"
    Controls("TextBox22").SetFocus
    Exit Sub
    End If
     
    'Erreur mouvement 1 bis
    If Controls("TextBox22").Value = True And Controls("TextBox23").Value = True Then
    MsgBox "Vous devez spécifier un débit ou un crédit par clé d'imputation!", vbExclamation, "ERREUR"
    Controls("TextBox22").SetFocus
    Exit Sub
    End If
     
    'Erreur imputation 2
    If Controls("TextBox24") = "" Then
    MsgBox "Vous devez spécifier au moins deux clés d'imputation!", vbExclamation, "ERREUR"
    Controls("TextBox24").SetFocus
    Exit Sub
    End If
     
    'Erreur mouvement 2
    If Controls("TextBox25") = "" And Controls("TextBox26") = "" Then
    MsgBox "Vous devez spécifier un mouvement!", vbExclamation, "ERREUR"
    Controls("TextBox25").SetFocus
    Exit Sub
    End If
     
    'Erreur mouvement 2 bis
    If Controls("TextBox25").Value = True And Controls("TextBox26").Value = True Then
    MsgBox "Vous devez spécifier un débit ou un crédit par clé d'imputation!", vbExclamation, "ERREUR"
    Controls("TextBox25").SetFocus
    Exit Sub
    End If
     
    'Erreur observations
    If Controls("optionbutton2").Value = True And Controls("TextBox21") = "" Then
    MsgBox "Vous devez renseigner la case observations!", vbExclamation, "ERREUR"
    Controls("TextBox21").SetFocus
    Exit Sub
    End If
     
    'Identifiant
    Range("H65536").End(xlUp).Offset(1, -7).Value = formulaire.ComboBox1.Text
     
    'Date
    Range("H65536").End(xlUp).Offset(1, -6).Value = formulaire.TextBox1.Text
     
    'Budget
    Range("H65536").End(xlUp).Offset(1, -5).Value = formulaire.ComboBox2.Text
     
    'N° virement
    Range("H65536").End(xlUp).Offset(1, -4).Value = formulaire.TextBox2.Text
     
    'Imputation
    Range("H65536").End(xlUp).Offset(1, 0).Value = formulaire.TextBox3.Text
    Range("H65536").End(xlUp).Offset(1, 0).Value = formulaire.TextBox24.Text
    Range("H65536").End(xlUp).Offset(1, 0).Value = formulaire.TextBox27.Text
    Range("H65536").End(xlUp).Offset(1, 0).Value = formulaire.TextBox30.Text
    Range("H65536").End(xlUp).Offset(1, 0).Value = formulaire.TextBox33.Text
     
    'Débit
    Range("H65536").End(xlUp).Offset(-4, 3).Value = formulaire.TextBox22.Text
    Range("H65536").End(xlUp).Offset(-3, 3).Value = formulaire.TextBox25.Text
    Range("H65536").End(xlUp).Offset(-2, 3).Value = formulaire.TextBox28.Text
    Range("H65536").End(xlUp).Offset(-1, 3).Value = formulaire.TextBox31.Text
    Range("H65536").End(xlUp).Offset(0, 3).Value = formulaire.TextBox34.Text
     
    'Crédit
    Range("H65536").End(xlUp).Offset(-4, 4).Value = formulaire.TextBox23.Text
    Range("H65536").End(xlUp).Offset(-3, 4).Value = formulaire.TextBox26.Text
    Range("H65536").End(xlUp).Offset(-2, 4).Value = formulaire.TextBox29.Text
    Range("H65536").End(xlUp).Offset(-1, 4).Value = formulaire.TextBox32.Text
    Range("H65536").End(xlUp).Offset(0, 4).Value = formulaire.TextBox35.Text
     
    Unload Me
     
    End Sub

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    peux tu préciser ou doivent se placer les données?


    michel

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Avec ce fichier joint, ça sera sans doute plus facile de comprendre ma demande.
    Fichiers attachés Fichiers attachés

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    J'ai tout bien rempli et cependant j'ai toujours le message
    "Vous devez spécifier un débit ou un crédit par clé d'imputation!"
    Ensuit je ne comprends pas bien ton "If Controls("TextBox22").Value = True" sur un TextBox
    Tu expliques ?
    A+

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    1) Pour le message d'erreur, à une clé d'imputation correspond un débit OU un crédit. Donc si on remplit un débit ET un crédit pour une même clé, le message d'erreur
    2) En ce qui concerne le "If Controls("TextBox22").Value = True" sur un TextBox, je veux conditionner la validation par le bouton "valider" au remplissage de la textbox22

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Alors remplace par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Trim(Controls("TextBox22").Value) = ""
    Trim effacera un éventuel espace perdu par là
    A+

    Edit
    Si tu veux tester un numérique, utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If not isnumeric (TextBox22.value) then

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je viens de tester ton code sur plusieurs saisies : Aucun problème (!)
    Citation Envoyé par Comme tu
    Je me suis mis cette semaine à la programmation
    J'ai ajouter des "controltiptext" afin que tu vois ce que ça donne. Un message s'affichera sur chaque contrôle quand tu laisseras la souris dessus.
    Je te joins le fichier Pièce jointe 14769
    A+

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup pour l'aide Ouskel'n'or.
    Je m'empresse de tester tout ça.

    Désolé, mais il y a toujours une erreur. En fait, ça fonctionne bien tant qu'on saisit les 5 imputations mais à partir du moment où on en saisit que 2 comme ça pourra être le cas dans mon travail, les débits ou crédits des 2 dernières ajoutés sont décalés vers le haut effaçant les résultats précédents.

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu as pu remarquer que j'avais supprimé un message que j'ai placé "en attente"... Je prévoyais quelque chose comme ça mais j'ignorais que les cinq lignes pouvaient ne pas être remplies.
    Je te mets donc simplement la réponse à mon interrogation.
    Pour régler le pb, tu pourrais modifier toutes tes lignes en ajoutant une condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Trim(formulaire.TextBox34.Text) <> "" then _
    Range("H65536").End(xlUp).Offset(0, 3).Value = formulaire.TextBox34.Text
    L'explication ?
    Range("H65536").End(xlUp) te donne la dernière ligne renseignée.
    Tu parts donc de la dernière ligne renseignée dans la feuille de calculs pour tes offset.
    Si ta ligne est renseignée, mais que l'imputation est vide, quand tu fais Offset(1, 0) tu écris "" sur la ligne suivante... Du coup, elle n'est plus renseignée et la ligne renseignée est la ligne précédente pour la donnée suivante.
    J'écrirais donc ça différemment.
    Première ligne vide = Range("H65536").End(xlUp).row + 1
    Et à partir de là, je remplirais la feuille de calculs

    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
    'Erreur observations
    If Controls("optionbutton2").Value = True And Controls("TextBox21") = "" Then
        MsgBox "Vous devez renseigner la case observations!", vbExclamation, "ERREUR"
        Controls("TextBox21").SetFocus
        Exit Sub
    End If
     
    NoLigne = Range("H65536").End(xlUp).Row + 1    ' Première ligne vide
     
    'Identifiant
    Range("A" & NoLigne).Value = formulaire.ComboBox1.Text
     
    'Date
    Range("B" & NoLigne).Value = formulaire.TextBox1.Text
     
    'Budget
    Range("C" & NoLigne).Value = formulaire.ComboBox2.Text
     
    'N° virement
    Range("D" & NoLigne).Value = formulaire.TextBox2.Text
     
     
    'Imputation
    Range("H" & NoLigne).Value = formulaire.TextBox3.Text
    Range("H" & NoLigne).Offset(1, 0).Value = formulaire.TextBox24.Text
    Range("H" & NoLigne).Offset(2, 0).Value = formulaire.TextBox27.Text
    Range("H" & NoLigne).Offset(3, 0).Value = formulaire.TextBox30.Text
    Range("H" & NoLigne).Offset(4, 0).Value = formulaire.TextBox33.Text
     
    'Débit
    Range("H" & NoLigne).Value = formulaire.TextBox22.Text
    Range("H" & NoLigne).Offset(1, 3).Value = formulaire.TextBox25.Text
    Range("H" & NoLigne).Offset(2, 3).Value = formulaire.TextBox28.Text
    Range("H" & NoLigne).Offset(3, 3).Value = formulaire.TextBox31.Text
    Range("H" & NoLigne).Offset(4, 3).Value = formulaire.TextBox34.Text
     
    'Crédit
    Range("H" & NoLigne).Value = formulaire.TextBox23.Text
    Range("H" & NoLigne).Offset(1, 4).Value = formulaire.TextBox26.Text
    Range("H" & NoLigne).Offset(2, 4).Value = formulaire.TextBox29.Text
    Range("H" & NoLigne).Offset(3, 4).Value = formulaire.TextBox32.Text
    Range("H" & NoLigne).Offset(4, 4).Value = formulaire.TextBox35.Text
    J'ai testé, ça paraît OK
    A+

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup du coup de main. Ca tourne impeccablement. Cette première approche m'a donné envie de m'intéresser davantage au VBA.

  11. #11
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Alors n'oublie pas de cliquer sur

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    J'aimerais si possible avoir encore un petit renseignement.
    Comment faire pour afficher l'addition de textbox dans un autre textbox?
    En fait, j'aimerai faire l'addition de textbox1 et textbox2 dans textbox3 sur le userform.

  13. #13
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Regarde l'aide sur Val et l'opérateur +.

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Ok merci bien

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

Discussions similaires

  1. Demande d'aide sur mon code
    Par b.soufiane dans le forum C++
    Réponses: 6
    Dernier message: 07/12/2007, 16h36
  2. Demande d'aide sur un code source
    Par Soward dans le forum SDL
    Réponses: 3
    Dernier message: 13/06/2007, 20h22
  3. aide sur un code Mysql+
    Par flo1084 dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 24/10/2006, 09h54
  4. [C# 1.1] Aide sur un code C# 2005
    Par Filipegomes dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/10/2006, 14h33
  5. [VB6] Aide sur un code
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/05/2006, 14h54

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