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 :

blocage du userform textbox [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 128
    Par défaut blocage du userform textbox
    Bonjour à tous,
    j'ai une erreur sûrement facile à déceler mais biensûr pas à mon niveau donc je fais appel à vous...
    mon code bloc à ce niveau dans le code complet :
    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
    Sub Remisepro()
     
    Worksheets("Devis").Protect userinterfaceonly:=True, AllowFormattingCells:=True
    Dim Satisf As Boolean, Donrem As String, vrem As Integer
    Dim lRem As Integer, Remi As Integer, lht As Integer
    Dim Crit As Range
    Dim Plage As Range
    Dim ht As Single
    Dim a As Range
    Dim lAp As Integer
     
    Const colht = 13
     
    'Set Plage = Range("B23:B" & Range("B" & Rows.Count).End(xlUp).Row)
    Set Plage = Range("A23:M" & Range("b" & Rows.Count).End(xlUp).Row)
     
    ht = Application.WorksheetFunction.SumIf(Plage.Columns(2), "<>0", Plage.Columns(13))
     
     
      On Error Resume Next
       Set a = Application.InputBox("Sélectionnez une plage !", "Sélection de cellules", Type:=8)
      On Error GoTo 0
      U_remise.Show
      Donrem = TextBox1.Text
      vrem = CInt(Donrem)
       If Not a Is Nothing Then
        a.Value = "Remise professionnelle"
        a.HorizontalAlignment = xlCenter
        a.Font.FontStyle = "Bold Italic"
        a.Select
         ActiveCell.Offset(0, 5).Value = -ht * (vrem / 100)
     
          lAp = a.Row
              Cells(lAp, colht).NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
     
              End If
     
    End Sub
    je mets le code du userform U_Remise :
    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
    Function recdon() As Boolean
    If TextBox1.Text = "" Then
    MsgBox "Il manque des données"
    Else: recdon = True
    End If
    End Function
     
    Private Sub UserForm_Click()
    Caption = "La remise est de " + CInt(Donrem) + "%"
    End Sub
    Private Sub TextBox1_Change()
    Donrem = TextBox1.Text
    End Sub
     
     
    Private Sub U_OK_click()
    If Not recdon Then Exit Sub
    Satisf = True
    Unload Me
    End Sub
    Private Sub U_Annul_click()
    Satisf = False
    Unload Me
    End Sub
    Je ne comprends pourquoi la valeur de Donrem = "" alors que je rentre une valeur dans mon textbox1...
    Si quelqu'un peut m'aider je serai super content. merci d'avance

  2. #2
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Avril 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 14
    Par défaut
    Bonjour

    Je pense que tu as un problème de porté de variable.

    Dans le module contenant le code complet déclare la variable Donrem en public avant la routine (en n’oubliant pas de supprimer la déclaration dans la routine)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Donrem As String
     
    Sub Remisepro()
     
    Worksheets("Devis").Protect userinterfaceonly:=True, AllowFormattingCells:=True
    Dim Satisf As Boolean, vrem As Integer
    Cette variable étant écrite dans le UserForm tu pourras supprimer la ligne que j’ai mis en commentaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      U_remise.Show
      'Donrem = TextBox1.Text
      vrem = CInt(Donrem)
    Cordialement

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2010
    Messages
    240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 240
    Par défaut
    Bonjour,

    A première vue,

    tu utilises la variable dans plusieurs fonction.

    Je te propose dans un premier temps de déclarer ta variable en "Public"

    pour se faire, tu retire de la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim Satisf As Boolean, Donrem As String, vrem As Integer
    le

    et au debut de ton module, donc à l'exterieur d'un "Sub"

    tu mets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Donrem As String
    et tu testes de nouveau ^^ et tu me dis quoi ^^

    [Edit] tu m'as pris de vitesse ^^ Samuel50

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 128
    Par défaut il reste un hic
    Merci pour vos réponses cependant j'ai un autre souci quand mon userform
    U_remise apparaît dès que je veux saisir un chiffre j'ai un débogage au niveau de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub TextBox1_Change()
    du code dans le userform. Donc pour résoudre ce mystère j'ai effacé toute la procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub TextBox1_Change()
    Donrem = TextBox1.Text
    End Sub
    pour l'écrire dans le code Remise pro du module :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    U_remise.Show
      Donrem = TextBox1.Text
      vrem = CInt(Donrem)
    Mais la valeur de Donrem reste nulle (0). Je ne comprends toujours pas pourquoi

    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
    Public Donrem As String
     
    Sub Remisepro()
     
    Worksheets("Devis").Protect userinterfaceonly:=True, AllowFormattingCells:=True
    Dim Satisf As Boolean, vrem As Integer
    Dim lRem As Integer, Remi As Integer, lht As Integer
    Dim Crit As Range
    Dim Plage As Range
    Dim ht As Single
    Dim a As Range
    Dim lAp As Integer
     
    Const colht = 13
     
    'Set Plage = Range("B23:B" & Range("B" & Rows.Count).End(xlUp).Row)
    Set Plage = Range("A23:M" & Range("b" & Rows.Count).End(xlUp).Row)
     
    ht = Application.WorksheetFunction.SumIf(Plage.Columns(2), "<>0", Plage.Columns(13))
     
     
      On Error Resume Next
       Set a = Application.InputBox("Sélectionnez une plage !", "Sélection de cellules", Type:=8)
      On Error GoTo 0
      U_remise.Show
      Donrem = TextBox1.Text
      vrem = CInt(Donrem)
       If Not a Is Nothing Then
        a.Value = "Remise professionnelle"
        a.HorizontalAlignment = xlCenter
        a.Font.FontStyle = "Bold Italic"
        a.Select
         ActiveCell.Offset(0, 5).Value = -ht * (vrem / 100)
     
          lAp = a.Row
              Cells(lAp, colht).NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
     
              End If
     
    End Sub

  5. #5
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Avril 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 14
    Par défaut
    Le problème est qu’au moment où tu veux récupérer le texte dans TextBox1 elle n’existe plus étant donné que tu as fermé le UserForm juste avant.

    C’est pourquoi je t’ai conseillé de passer par une variable Public écrite par le UserForm.

    Peut tu indiquer quel est le type d’erreur que tu as ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 128
    Par défaut re
    bonjour samuel 50,
    je crois que mon souci se situ au niveau du code de mon userform : U_remise.
    Quand j'effectue le debogage en mode pas à pas détaillé il ne lit pas la procédure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub UserForm_Click()
    Donrem = TextBox1.Text
    Caption = "La remise est de " + CInt(Dinrem) + "%"
    End Sub
    Donc la valeur de Donrem est nulle et celle de vrem aussi.

    Je n'ai pas d'erreur dans le code je n'arrive pas à faire en sorte que la valeur Donrem soit ce qui est saisi dans textbox1...
    voici le code attaché à U_remise :
    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
    Function recdon() As Boolean
    If TextBox1.Text = "" Then
    MsgBox "Il manque des données"
    Else: recdon = True
    End If
    End Function
     
    Private Sub UserForm_Click()
    Donrem = TextBox1.Text
    Caption = "La remise est de " + CInt(Dinrem) + "%"
    End Sub
     
     
    Private Sub U_OK_click()
    If Not recdon Then Exit Sub
    Satisf = True
    Unload Me
    End Sub
    Private Sub U_Annul_click()
    Satisf = False
    Unload Me
    End Sub
    c'est ici que doit ce trouver l'erreur je pense...
    merci pour ton aide

  7. #7
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Avril 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 14
    Par défaut
    Essaye en remplaçant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub UserForm_Click()
    Donrem = TextBox1.Text
    Caption = "La remise est de " + CInt(Dinrem) + "%"
    End Sub
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub TextBox1_Change()
    Donrem = TextBox1.Text
    UserForm1.Caption = "La remise est de " & CInt(Donrem) & "%"
    End Sub
    Et s’il y a une erreur donne moi son intitulé car je l’ai essayé et ça fonctionne

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

Discussions similaires

  1. [XL-2010] Reporter une somme d'un OWC11.Spreadsheet dans un UserForm TextBox
    Par orducom1 dans le forum Excel
    Réponses: 1
    Dernier message: 23/04/2014, 11h06
  2. UserForm, TextBox & Controle de saisie
    Par wipMan dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 26/06/2013, 11h35
  3. userform --> textbox valeur par défaut changeante
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/03/2008, 09h21
  4. [VBA-E] userform TextBox
    Par mulanzia2003 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/03/2006, 09h18

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