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 :

Modification via userform, vide ou imposer format nombre [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Modification via userform, vide ou imposer format nombre
    Bonjour,

    Je voudrais effectuer des corrections dans une BD via un userform. Le code ci-dessous fonctionne bien si j'insère des nombres.
    Il s'agit de paramètres électriques, donc lors de la saisie et l'archivage des erreurs ont été commises.
    En effet, le relevé n'ayant pas été effectué, je voudrais vider les cellules correspondantes dans la BD.
    Pour cela, je vide les valeurs des 2 textboxs (TextBox1 et TextBox2) mais mon code plante sur la ligne du "IF".
    Je suis vraiment bloqué. Je vous remercie pour votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Cmd_Valider_Click()
    Set f = Sheets("BD")
     
    For Each c In f.Range("C2:C" & f.[C1048576].End(xlUp).Row)
    If c = CDate(Txt_Date) And c.Offset(0, 15) = Txt_cmdp And c.Offset(0, 16) = Txt_Poste _
    Then c.Offset(0, 17) = CDbl(TextBox1): c.Offset(0, 18) = CDbl(TextBox2)
    Next
     
    Unload Me
     
    MsgBox "Paramètres Corrigés!", vbInformation
    End Sub
    Cordialement,

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour cathodique; le Forum

    D'abord il faudrait mettre CDate pour les 3 comparaisons dans ta ligne IF.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If c = CDate(Txt_Date) And c.Offset(0, 15) = CDate(Txt_cmdp) And c.Offset(0, 16) = CDate(Txt_Poste)

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour Docmarti,

    je te remercie beaucoup pour ton retour.
    D'abord il faudrait mettre CDate pour les 3 comparaisons dans ta ligne IF.
    If c = CDate(Txt_Date) And c.Offset(0, 15) = CDate(Txt_cmdp) And c.Offset(0, 16) = CDate(Txt_Poste)
    c.Offset(0, 15) ne contient pas une date mais contient du texte (référence du type de relevé)
    c.Offset(0, 16) ne contient pas une date mais valeur Alphanumérique (référence du poste)

    Je voudrais mettre des condition sur textBox1 et textBox2, si textboxs vides alors les cellules correspondantes dans la feuille BD seront vidées
    et si textboxs contiennent du numérique alors les cellules correspondantes auront le même format numérique.

    Je n'ai mis qu'une partie de mon code, seulement la partie où je bloque. Cette userform est lancé à partir d'une autre userform,
    donc à son ouverture dans textbox1 et textbox2, on trouve les valeurs à modifier (vide ou numérique).

    c'est là que je bloque je n'ai su mettre la 1ère condition, si je vide les textboxs alors les cellules correspondantes dans la BD seront vidées.
    Par contre si, j’insère des valeurs ou modifie celles qui se trouvent dans les textboxs mon code fonctionne bien

    Encore merci.

    Cordialement,

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour cathodique;

    Ca peut ressembler à ceci :

    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
    Private Sub Cmd_Valider_Click()
    Set f = Sheets("BD")
     
    For Each c In f.Range("C2:C" & f.Range("C" & Rows.Count).End(xlUp).Row)
     
    If c = CDate(Txt_Date) Then 'La premiere condition est verifiee, on peut verifier les 2 autres conditions
     ok2 = False
     ok3 = False
     valeur2 = ""
     valeur3 = ""
     
     If Trim(Txt_cmdp) = "" Then ok2 = True
     If ok2 = False And c.Offset(0, 15) = Txt_cmdp Then ok2 = True: valeur2 = Txt_cmdp 'Valeur de type String
     
     If Trim(Txt_Poste) = "" Then ok3 = True
     If ok3 = False Then
     If c.Offset(0, 16) = CDbl(Txt_Poste) Then ok3 = True: valeur3 = CDbl(Txt_Poste)  'Convertir en valeur de type numerique
     End If
     'Si tu veux que les 2 conditions donnent la valeur TRUE pour faire des modifications, c'est comme ce qui suit :
     If ok2 = True And ok3 = True Then
      c.Offset(0, 17) = valeur2: c.Offset(0, 18) = valeur3
     End If
    End If
     
    Next
     
    Unload Me
     
    MsgBox "Paramètres Corrigés!", vbInformation
    End Sub

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir Docmarti,

    Merci pour ton code mais à première vue ça ne résoudra pas mon problème, car le test doit ce faire sur textbox1 et textbox2. Je vais tout de même faire un test.

    Je prends un peu de temps pour monter un fichier qui illustre mon problème, je pense que c'est la meilleur solution. Tu comprendras mieux mon souci.

    à tantôt.

    Cordialement,

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Citation Envoyé par cathodique Voir le message

    Merci pour ton code mais à première vue ça ne résoudra pas mon problème, car le test doit ce faire sur textbox1 et textbox2. Je vais tout de même faire un test.

    ,
    Ce test se fait sur TextBox1 et Texbox2. Les 2 conditions doivent être remplies.

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

Discussions similaires

  1. [XL-2010] Problème format de cellule après modification via userform
    Par r9titi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/02/2012, 14h34
  2. Modification et suppression dynamique de liste de données via userform
    Par raf75002 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 30/03/2011, 14h43
  3. [PR-2007] Suivi des modifications sur une tâche via userform
    Par metmtl dans le forum VBA Project
    Réponses: 0
    Dernier message: 03/03/2010, 11h01
  4. [XL-2003] Modification valeurs base de données via userform
    Par Kimaos dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/05/2009, 05h29
  5. Modif format nombre pour 24 TextBox
    Par melouille56 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/12/2007, 21h26

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