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 :

Compléter une cellule à partir d'une TextBox


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Compléter une cellule à partir d'une TextBox
    Bonjour,

    Je viens de me mettre à essayer de faire des macros autant dire que je n'ai aucune connaissance.

    Mon début de macro test un tableau afin de trouver la première cellule vide et c'est déjà là ou je suis bloqué car je ne sais pas écrire le code pour remplir cette cellule vide car son adresse est variable.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub TextBox1_Change()                           
    Range("B6").Select  ' selection de la case de départ
    Do While IsEmpty(ActiveCell) = False ' boucle de recherche
    Selection.Offset(1, 0).Select
    Loop
     
    TextBox1.Value =  ' Mon problème
     
    If IsNumeric(TextBox1.Value) = True Then ' Vrai si le contenu de la TextBox Numéro du bon d'intervention est un nombre
         Else
           MsgBox "Veuillez saisir un nombre !!!"  ' Affichage d'un message si le contenu de la TextBox Numéro du bon d'intervention n'est pas un nombre
    End If
    End Sub
    Cordialement,

    Le Marsu

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Il n'est pas nécessaire de faire une boucle pour trouver la première cellule vide, pour la colonne B par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B" & Rows.Count).End(xlUp).Offset(1, 0) = "ce que tu veux"

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Le Marsu et le forum
    Bienvenu sur le Fort Rhum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub TextBox1_Change()
    If Not (IsNumeric(TextBox1)) Then '
           MsgBox "Veuillez saisir un nombre !!!", vbCritical + vbOKOnly, "ERREUR SAISIE"
    Else
        'Range("B6").End(xlDown).offset(1,0)=TextBox1  'mais j'aime pas
        'Range("B65536").End(xlUp).Offset(1, 0)=TextBox1  'mieux
        Range("B65536").End(xlUp)(2)TextBox1 
    End If
    End Sub
    Attention : dans tous les cas, B6 ne doit pas être vide
    Pour voir les diffréences, fait un test en remplissant la case B10, et en laissant B7,B8 et B9 vide.

    Comme tu vas l'inscrire après la dernière cellule non-vide, il faut tester avant de l'écrire, sous peine de voir un tas d'essais inscrit.

    Un test doit avoir la condidion = Vrai ou Faux (True/False) => pas la peine de répéter "condition=True", "Condition" suffit.
    si tu testes, sur une condition fausse, preds l'inverse de ta condition (avec) Not par exemple). Ne fait pas ce que tu as écrit :
    If condition Then
    else
    'Valeur si faux
    End if
    écrit plutôt
    if not(condition) then
    'valeur si faux
    endif
    A+
    EDIT oups pas Bx dans tExetBox1, mais l'inverse

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    Je vous remercie pour vos réponses rapide.
    Mais après de multiple essais et recherche sur internet, je reviens vers vous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub TextBox1_Change()
     
    Range("B" & Rows.Count).End(xlUp).Offset(1, 0) = CDbl(TextBox1.Value)
    If IsNumeric(TextBox1.Value) = True Then
          Else
            MsgBox "Veuillez saisir un nombre !!!"
    End If
    End Sub
    J'ai modifié ma feuille excel et la recherche de la dernière ligne occupée fonctionne.

    - Par contre l'insertion d'un chiffre du type 145, ce fait de la manière suivante ligne 1 - 1, ligne 2 - 14 et ligne 3 - 145;

    - L'effacement des données par mon bouton RAZ se fait bien au niveau du formulaire mais n'affecte pas le tableau Excel;

    - De même si le format du nombre n'est pas correcte du genre une lettre, mon test me dit bien que ce n'est pas correcte et me demande une nouvelle saisie mais l'effacement se fait bien dans le formulaire par contre pas dans le tableau Excel.

    Désolé de paraître un peu lourd mais je compte m'améliorer très vite.

    Cordialement,

    Le Marsu

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Le Marsu et le forum
    LIS LES RÉPONSES EN ENTIER
    Si tu inscris et tu testes, il faut supprimer l'inscription!
    Si tu n'inscris que si c'est bon....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub TextBox1_Change()
    If IsNumeric(TextBox1.Value) Then
         Range("B" & Rows.Count).End(xlUp).Offset(1, 0) = CDbl(TextBox1)
    Else
         MsgBox "Veuillez saisir un nombre !!!"
    End If
    End Sub
    - Par contre l'insertion d'un chiffre du type 145, ce fait de la manière suivante ligne 1 - 1, ligne 2 - 14 et ligne 3 - 145
    Alors, pourquoi tu le convertis en nombre à virgule flottante ?
    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
    Private Sub TextBox1_Change()
    Dim Cel As Range
    'Dim TextBox1 As String
    Dim X As Integer
    'TextBox1 = "151"
    Set Cel = Range("B" & Rows.Count).End(xlUp).Offset(1, 0)
    'cel= dernier cellule de B non-vide + 1
    If IsNumeric(TextBox1) Then 'si c'est numérique
        If CLng(TextBox1) = CDbl(TextBox1) Then
        'si la convertion en entier ne change pas le nombre
            For X = 1 To Len(Trim(TextBox1))
            'pour X=1 jusqu'au nombre de caractères (moinsles espaces)
                Cel.Offset(X - 1, 0) =clng(Left(Trim(TextBox1), X))
                'cel décalé de X-1 = x lettres à gauche de textbox1 (moins les espaces) converties en chiffre
            Next X ' x suivant
        Else 'sinon
            Cel = CDbl(TextBox1) 'on convertit textbox1 et on le colle dans cel
        End If
    Else
        MsgBox "Veuillez saisir un nombre !!!"
    End If
    End Sub
    on pourrait sans doute simplifier, mais pas sans plus d'infos.
    A+
    EDIT Oups, j'avais laissé mon système de test

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonsoir Gorfael,

    LIS LES RÉPONSES EN ENTIER
    Si tu inscris et tu testes, il faut supprimer l'inscription!
    Si tu n'inscris que si c'est bon....
    Je viens de comprendre votre réponse mais comme je l'ai dit, cela va faire seulement 7 jours que j'ai découvert le VBA sous Excel.

    Je pourrais copier des bouts de code sans chercher à comprendre comment ils fonctionnent mais cela ne m'intéresse pas.
    Je suis autodidacte en CAO sous AutoCAD en 2D et SEE, en CFAO sous SolidWorks, et je me débrouille en HTML et JavaScript. C'est que ma façon d'apprendre n'est pas si mauvaise pour un "electro-mécano" et cette semaine je vais me chercher un ou deux livres.

    Alors, pourquoi tu le convertis en nombre à virgule flottante ?
    Parce que j'avais fais un test et j'ai oublié de le supprimer.

    Je mettrais mon fichier .xls complet une fois réduit car il ne passe pas sur le forum.

    Cordialement,

    Le Marsu

Discussions similaires

  1. Filtrer une colonne à partir d'une cellule
    Par D-D-Du-06 dans le forum Excel
    Réponses: 7
    Dernier message: 21/04/2016, 11h26
  2. [XL-2003] Problème pour renommer un fichier à partir d'une variable contenu dans une cellule
    Par the-geut dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/05/2010, 11h43
  3. [XL-2007] Renvoie d'une cellule à partir d'une autre
    Par jeremiefiber dans le forum Excel
    Réponses: 2
    Dernier message: 08/05/2009, 14h19
  4. Auto completion d'une cellule à partir d'une plage nommée
    Par p2n2k2 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/01/2009, 17h52
  5. Lancer une macro à partir d'une cellule
    Par marc56 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/09/2007, 16h58

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