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 :

User Form pour données dans des cellules


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Points : 5
    Points
    5
    Par défaut User Form pour données dans des cellules
    Bonjour,

    Voila je suis Novice dans l'utilisation de VBA. J'ai créé un fichier d'aliment avec plusieurs valeurs en face de ses aliments.

    Je voudrai que au lieu de rentrer les noms et valeurs des aliments directement dans excel, les rentrer dans un UserForm (textBox....)
    J'ai trouvé le code pour faire correspondre un text box à une cellule : Range = ("A1") = TextBox1.Value. Et ça fonctionne.

    Mais lorsque je rentre une nouvelle valeur dans un userform, celle-ci remplace celle dans la cellule A1, ce qui semble logique.
    Est ce qu'il y aurai un moyen pour aller à la ligne suivante automatiquement (A2 puis A3....)?

    Merci de vos réponses

  2. #2
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    En tant que novice, si tu commençais par nous montrer (via un copié/collé rigoureux***) le code complet de ton UserForm?
    Ce code, dans ta réponse, place le entre les balises [CODE ] [/CODE].
    Pour cela, clic sur le # dans l'entête de ton futur message.

    *** Copié/collé rigoureux parce que, à titre d'exemple, il serait extrêmement surprenant que : Range = ("A1") = TextBox1.Value fonctionne...
    Cordialement,
    Franck

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Bonjour
    Pour enregistrer à la ligne suivante bien sure il faut chercher la dernière ligne non vide, ajouter 1 et écrire la bas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Dim j As Long
    With Sheets("Feuil1") ' à adapter au nom de ton onglet
    j = .Range("A" & Rows.Count).End(xlUp).Row + 1 ' ici va voir la dernière ligne non vide de la colonne A et ajoute 1 (+1)
    .Range("A" & j) = TextBox1.Value 'enregistre la valeur de textbox1 dans la première cellule vide de la colonne A
    end with
    Bonne journée à toutes et à tous , bonne fête et bonne ANNÉE 2019 (Un paquet complet offert )
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Re Bonjour,

    okay j'ai bien compris donc le code pour quand je rentre dans une texte box il soit copié dans une cellule (ici A2) est celui-la.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox1_Change()
    Range("A2") = TextBox1.Value
    End Sub
    Je confirme que cela marche, quand je rentre dans TextBox1 ça rentre quelque chose dans A2. Mais lorsque que je rentre à nouveau dans TextBox1 ça remplace le texte présenté précédemment.

    Donc comment faire pour que au lieu que le texte soit rentré dans la cellule A2, il soit rentré dans A3 puis A4 etc.

    Merci de vos réponses

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par BENNASR Voir le message
    Bonjour
    Pour enregistrer à la ligne suivante bien sure il faut chercher la dernière ligne non vide, ajouter 1 et écrire la bas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Dim j As Long
    With Sheets("Feuil1") ' à adapter au nom de ton onglet
    j = .Range("A" & Rows.Count).End(xlUp).Row + 1 ' ici va voir la dernière ligne non vide de la colonne A et ajoute 1 (+1)
    .Range("A" & j) = TextBox1.Value 'enregistre la valeur de textbox1 dans la première cellule vide de la colonne A
    end with
    Bonne journée à toutes et à tous , bonne fête et bonne ANNÉE 2019 (Un paquet complet offert )
    Okay merci pour ta réponse j'ai essayé le code mais cela ne fonctionne toujours pas, je n'ai peut etre pas copié le code comme il faut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub TextBox1_Change()
    Dim j As Long
    With Sheets("Concentré") ' à adapter au nom de ton onglet
    j = .Range("A" & Rows.Count).End(xlUp).Row + 1 ' ici va voir la dernière ligne non vide de la colonne A et ajoute 1 (+1)
    .Range("A" & j) = TextBox1.Value 'enregistre la valeur de textbox1 dans la première cellule vide de la colonne A
    End With
    End Sub
    Merci encore

  6. #6
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Utiliser l'événement Change() du TextBox pour cela est une très mauvaise idée.
    Je suppose, par ailleurs, que vous remplissez plusieurs TextBox, correspondants tous à une ligne de votre tableau?

    Si oui, il vous faut simplement un bouton (CommandButton) pour valider les saisies.

    Le code de ce bouton devra :
    > Trouver le numéro de la première ligne vide,
    > Y stocker le contenu des différents TextBox dans leurs colonnes respectives.

    Très simple donc.
    Une petite recherche sur le forum te permettra de tout trouver.
    Cordialement,
    Franck

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Alors, comme je l'ai dit je ne connais pas beaucoup VBA donc je n'ai malheureusement rien compris
    Mais Merci quand meme

  8. #8
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Voila un exemple
    Fichiers attachés Fichiers attachés
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  9. #9
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Tu es débutant, donc il te faut apprendre les bases.
    Ce n'est pas en te donnant le code ou un classeur exemple que tu vas progresser.

    1- Lecture : https://silkyroad.developpez.com/VBA/ControlesUserForm/

    2- l'événement Change d'un TextBox, tu l'utilises via le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox1_Change()
     
    End Sub
    Or, cet événement se déclenche à chaque fois que tu frappes une touche de ton clavier.
    Il ne peut donc pas convenir.

    Je te propose donc, de dessiner sur ton Userform, un CommandButton qui te servira à valider.

    Tu peux utiliser pour cela, l'événement clic de ce bouton (reprise du code de Bennasr) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CommandButton1_Click()
    Dim Ligne As Long
       With Sheets("Feuil1") ' à adapter au nom de ton onglet
          Ligne = .Range("A" & Rows.Count).End(xlUp).Row + 1 ' ici va voir la dernière ligne non vide de la colonne A et ajoute 1 (+1)
          .Range("A" & Ligne) = TextBox1.Value 'enregistre la valeur de textbox1 dans la première cellule vide de la colonne A
          '.Range("B" & Ligne) = TextBox2.Value 'enregistre la valeur de textbox2 dans la première cellule vide de la colonne B
          '.Range("C" & Ligne) = TextBox3.Value 'enregistre la valeur de textbox3 dans la première cellule vide de la colonne C
          '.Range("D" & Ligne) = ComboBox1.Value 'enregistre la valeur de combobox1 dans la première cellule vide de la colonne D
       End with
    End Sub
    Cordialement,
    Franck

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci à Bennasar,

    J'ai repris ton document, j'ai un peu modifié le code pour qu'il s'adapte au mien mais ça marche nickel.

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

Discussions similaires

  1. [XL-2013] User forms pour extraire des données en fonction d'un pré-choix et d'une listbox
    Par concept67 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/11/2017, 14h49
  2. Réponses: 4
    Dernier message: 31/08/2017, 09h24
  3. Réponses: 3
    Dernier message: 08/10/2008, 16h34
  4. VBA/Excel "Mise en forme de texte dans des cellules"
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/03/2007, 16h20
  5. [VBA-E] afficher des données dans des cellules
    Par Bad Bond dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/04/2006, 14h04

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