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 :

Afficher msgbox si textbox vide [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut Afficher msgbox si textbox vide
    bonjour a vous tous
    dans mon classeur de devis j'ai un usf qui me permet de remplir ma feuille, mais dans cet usf je voudrais que lors de l'appui sur le bouton ajouter et que j'ai oublier de remplir le textbox9 (qui est la quantité) que j'ai un message qui me dit que j'ai oublier de remplir la quantité, de forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Me.Textbox9.value="" then MsgBox "Entrer une quantité,svp"
    mais que cela ne perturbe pas le reste du code comme cela le fait actuellement
    donc voici le code incriminé
    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
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    Private Sub ajout_Click()
    '*** bouton "ajout sur devis/facture"
     
      Dim lig As Integer, i As Integer
      Dim Sh As Worksheet, VPB As PageSetup
      Dim LargeurCol As Single, MaHauteur As Single, Lg_Origine As Single
      'calcul de la valeur de la variable lig
      Dim mot As String
      Dim ctrMt, ctrTVA7, ctrTVA19 As Variant
     
      Application.ScreenUpdating = False
      Application.EnableEvents = False
     
      With wsFacture
        .Range("c18:M18,O18:P18").Borders(xlEdgeBottom).LineStyle = xlContinuous
        lig = .Range("B65536").End(xlUp)(2).Row
        If lig < 19 Then lig = 19
     
        'insertion d'une ligne
        '.Rows(lig + 1).Insert
        .Range("C" & lig - 1 & ":P" & lig - 1).Copy
        .Range("C" & lig).Insert xlShiftDown
        .Range("C" & lig & ":P" & lig).ClearContents
        .Range("C" & lig & ":H" & lig).HorizontalAlignment = xlLeft
     
        If Not Me.TextBox2 = "" Then
          .Rows(lig) = ""
          .Range("D" & lig) = TextBox2.Value
          Lg_Origine = .Columns(3).ColumnWidth
          LargeurCol = .Columns(3).ColumnWidth + .Columns(4).ColumnWidth + .Columns(5).ColumnWidth + .Columns(6).ColumnWidth + _
                       .Columns(7).ColumnWidth + .Columns(8).ColumnWidth
          .Columns(4).ColumnWidth = LargeurCol
          With .Range("D" & lig, "H" & lig)
            .Font.Size = 14
            .Font.Name = "arial"
            .MergeCells = False
            .WrapText = True  'retour du texte à la ligne
            .EntireRow.AutoFit  'mettre la ligne en ajustement auto de la hauteur
            MaHauteur = .RowHeight  'voir quelle est la hauteur de la ligne une fois cet autofit fait
            .MergeCells = True  'refusionner
     
            '.VerticalAlignment = xlCenter
            .RowHeight = IIf(MaHauteur > 15, MaHauteur, 15)  'si la hauteur une fois autofit fait est inferieur à 15 je laisse 15 en minimum sinon hauteur de l'autofit (perso c'est la hauteur mini que je voulais
          End With
        End If
        .Columns(4).ColumnWidth = Lg_Origine
        'recopie et mise en forme des données dans la feuille facturation
        .Cells(lig, "B") = Me.TextBox1
        .Cells(lig, "D") = Me.TextBox2
        .Cells(lig, "D").Font.Bold = False
        '.Cells(lig, "D").HorizontalAlignment = xlLeft
        '.Cells(lig, "D").VerticalAlignment = xlCenter
        .Range("D" & lig & ":H" & lig).Merge
        .Cells(lig, "I") = Me.TextBox3
        .Cells(lig, "I").NumberFormat = "#,##0.00€"
        .Cells(lig, "J") = Me.TextBox4
        .Cells(lig, "K") = Me.TextBox9
        .Cells(lig, "M") = Abs(Me.OptionButton2) + 1
     
     
        'calcul du montant HT
        If IsNumeric(.Cells(lig, "I")) And IsNumeric(.Cells(lig, "K")) Then
          .Cells(lig, "O").FormulaR1C1 = "=IF(RC[-2]=1,RC[-6]*RC[-4]*0.07,"""")"
          .Cells(lig, "O").NumberFormat = "#,##0.00€"
          .Cells(lig, "P").FormulaR1C1 = "=IF(RC[-3]=2,RC[-7]*RC[-5]*0.196,"""")"
          .Cells(lig, "P").NumberFormat = "#,##0.00€"
          .Cells(lig, "L").FormulaR1C1 = "=RC[-1]*RC[-3]"
          .Cells(lig, "L").NumberFormat = "#,##0.00€"
        End If
        'calcul du montant HT
        If IsNumeric(.Cells(lig, "I")) And IsNumeric(.Cells(lig, "K")) Then
            .Cells(lig, "L") = "=" & .Cells(lig, "I").AddressLocal & "*" & .Cells(lig, "K").AddressLocal
        Else
          .Cells(lig, "O") = ""
          .Cells(lig, "P") = ""
        End If
        'calcul des totaux montant HT, TVA5,5, TVA 19,6
        For i = lig To 1 Step -1
            If .Cells(i, "K") = "REPORT" Or .Cells(i, "K") = "Quantité" Then Exit For
        Next i
        .Cells(lig + 1, "L").Formula = "=SUM(" & .Range(.Cells(i + 1, "L"), .Cells(lig, "L")).AddressLocal & ")"
        .Cells(lig + 1, "L").NumberFormat = "#,##0.00€"
        .Cells(lig + 1, "O").Formula = "=SUM(" & .Range(.Cells(i + 1, "O"), .Cells(lig, "O")).AddressLocal & ")"
        .Cells(lig + 1, "O").NumberFormat = "#,##0.00€"
        .Cells(lig + 1, "P").Formula = "=SUM(" & .Range(.Cells(i + 1, "P"), .Cells(lig, "P")).AddressLocal & ")"
        .Cells(lig + 1, "P").NumberFormat = "#,##0.00€"
     
        If .Cells(lig + 1, "P") < 0.0001 Then .Cells(lig + 1, "P") = ""
        If .Cells(lig + 1, "O") < 0.0001 Then .Cells(lig + 1, "O") = ""
     
        'Remise a zéro du formulaire
         TextBox1.Value = ""
        TextBox2.Value = ""
        Me.TextBox7 = ""
         TextBox3.Value = ""
        TextBox9.Value = ""
        TextBox5.Value = ""
        TextBox8.Value = ""
        TextBox4.Value = ""
     
        'Formatage du tableau
     
     
        .Cells(lig, "C").Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Range(.Cells(lig, "I"), .Cells(lig, "P")).Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Range(.Cells(lig, "C"), .Cells(lig, "M")).Borders(xlEdgeTop).LineStyle = xlNone
        .Range(.Cells(lig, "O"), .Cells(lig, "P")).Borders(xlEdgeTop).LineStyle = xlNone
        .Range(.Cells(lig, "C"), .Cells(lig, "M")).Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Range(.Cells(lig, "O"), .Cells(lig, "P")).Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Range(.Cells(lig, "D"), .Cells(lig, "H")).Borders(xlInsideVertical).LineStyle = xlNone
        .Range(.Cells(lig, "I"), .Cells(lig, "Q")).Borders(xlInsideVertical).LineStyle = xlContinuous
        .Range(.Cells(lig, "O"), .Cells(lig, "P")).VerticalAlignment = xlCenter
     
        .Range(.Cells(lig, "I"), .Cells(lig, "M")).VerticalAlignment = xlCenter
     
        With .Range("C19:M" & lig & ",O19:P" & lig)
          .Font.Size = 14
          .Font.Name = "arial"
        End With
      End With
      wsFacture.Range("c19:M19").Borders(xlEdgeTop).LineStyle = xlContinuous
      wsFacture.Range("O19:P19").Borders(xlEdgeTop).LineStyle = xlContinuous
     
      ActiveWindow.ScrollRow = IIf((lig - NB_LIGNE_ARTICLE_FIGE) > Range("DOC_TITRE").Row, lig - NB_LIGNE_ARTICLE_FIGE, Range("DOC_TITRE").Row + 1)
     
      TextBox8 = Me.TextBox5.Text - Me.TextBox9.Text
      If TextBox8 < 0 Then TextBox8 = 0
      TextBox5 = TextBox8
     
     
      Application.ScreenUpdating = True
      Application.EnableEvents = True
     
    End Sub
    merci et j'espère être explicit

    Pascal

  2. #2
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Bonsoir grisan29,
    A quel moment faut-il faire le test ? "TextBox9" apparait 3 fois :

    • premier : mettre en colonne K
    • la seconde fois sous la forme
      TextBox9.Value = ""
    • la dernière sans réaffectation dans une soustraction.


    A expliquer.

    Sinon quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Me.Textbox9.value="" Then 
         Me.Textbox9.value=  Inputbox ("Entrer une quantité,svp", "Erreur")
         '+ tests pour vérifier la valeur saisie
    End If


    Un test complet du contenu des texbox au début de la procédure serait nécessaire, non ?


    ESVBA

  3. #3
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,

    avec le code que tu as fait, tu devrais être capable de régler le problème assez facilement et même prevoir de mettre obligatoirement des chiffres, imagines que tu ais (par erreur) des lettres dans ce textbox

    Bon courage
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut
    bonjour casafayere
    j'ai fait comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Me.TextBox9.Value = "" Then
      MsgBox "Entrer une quantité,svp"
      Exit Sub
      End If
    et cela a l'air de fonctionner
    Pascal

  5. #5
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour Pasacal,

    et la réponse de ESVBA te satisfait-elle ?, sinon je regarderai le fichier que tu as posté dans les contributions (si j'ai le temps) car j'imagine qu'il s'agit de celui là.

    ... et qui m'a demandé d'ouvrir un post pour cette demande
    BlueMonkey a tout à fait raison, ta dernière discussion (plus de 100 échanges) devenait complétement indigeste (à mon gout)

    Bonne journée

    PS : je n'ai pas vu ta dernière réponse
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  6. #6
    Membre éclairé Avatar de grisan29
    Homme Profil pro
    ouvrier poseur
    Inscrit en
    Octobre 2006
    Messages
    866
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ouvrier poseur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 866
    Par défaut
    bonsoir casafayere
    sinon je regarderai le fichier que tu as posté dans les contributions (si j'ai le temps)
    oui c'est tout a fait celui la et je vais ajouter ce que fait dans une réponse a ce post des contributions
    pour ESVBA oui c'est lui qui m'a mis sur la voie de réussite et j'ai mis les lignes de codes tout en haut du code après les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Application.ScreenUpdating = False
      Application.EnableEvents = False
    Pascal

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

Discussions similaires

  1. afficher dates dans textbox d'un Userform
    Par newsinfos dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/11/2007, 11h41
  2. Afficher dans une textbox pendant l'exécution
    Par cedric.synix dans le forum VB.NET
    Réponses: 9
    Dernier message: 24/09/2007, 13h30
  3. Réponses: 1
    Dernier message: 19/07/2006, 00h38
  4. valider_Click -> msgbox si champ vide
    Par b_steph_2 dans le forum Access
    Réponses: 10
    Dernier message: 11/01/2006, 18h06
  5. [c#]Gros text à afficher dans une textbox
    Par famemaur dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/05/2005, 11h12

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