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 :

bouton, userform, textbox(value) et ajout des données [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Par défaut bouton, userform, textbox(value) et ajout des données
    Bonjour,

    Je me permets de faire appel aux experts VBA du forum pour trouver, je suis sûr, une solution à ma prise de tête...
    voici mon userform ultra simplifié.

    Nom : cap2.png
Affichages : 2590
Taille : 3,5 Ko

    Voilà comment il s'articule grâce à un bouton je fais appel à cet userform je remplis mes textbox puis j'appuie sur ADD afin de les classer les uns à la suite des autres.
    J'ai fait le test avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    dim l as integer
     
    l=Sheets("Feuil1").Range(« a65536 »).End(xlUp).Row + 1
     
    range("a" & l)=textbox1.value
    range("b" & l)=textbox2.value
    Maintenant je désire figer une autre cellule à partir de laquelle je puisse récupérer les valeurs de mes Textbox.
    En somme, sur c11 et d11 récupérer mes valeurs respectives de Tbox1 et Tbox2.

    J'ai fais des tests avec range ("C11").select + With sans succès.

    Je fais appel à votre expertise afin que vous m'aiguilliez sur le process à adopter pour capitaliser les données de mes Tbox dans les cellules C11 et D11 puis ajouter grâce à l'outil 'ADD' les nouvelles valeurs saisies dans mes TBox, les unes à la suite des autres.

    Merci par avance de votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Comptable
    Inscrit en
    Novembre 2018
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Novembre 2018
    Messages : 100
    Par défaut
    Bonjour,

    Si j'ai bien compris la question, l'idée est d'inscrire dans la TextBox1 la valeur de C11 ?

    Essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textbox1.Text = range("C11").value

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Par défaut
    En fait c’est le contraire 😊
    Vous entrez des données dans les Txtbox vous cliquez sur «*add*» vous récupérer les valeurs préalablement sasies dans les Txtbox dans C11 et D11.
    Puis vous saisissez de nouvelles données et grâce à bouton «*add*» les valeurs se rangent ligne par ligne.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Comptable
    Inscrit en
    Novembre 2018
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Novembre 2018
    Messages : 100
    Par défaut
    Bonjour,

    Alors il suffit d'inverser l'ordre de l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     range("C11").value = textbox1.Text
    Cependant lors de la seconde saisie les données précédentes seront effacer par la nouvelle saisie.

    Pour incrémenter les données à la suite des autres il faut calculer la dernière ligne non vide. Pour cela utiliser le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     range("C" & range("C65000").end(xlUp).row +1 ).value = textbox1.Text
    A+

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Par défaut
    Merci de votre réactivité. Cette ligne de code épure pas mal mon programme cependant je ne resous pas mon problème de démarrer à la cellule C11 et de poursuivre l’incrementation. Je vais essayer d’amender votre code avec un if...

  6. #6
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 969
    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 969
    Par défaut
    Bonjour
    si j'ai bien compris tu cherche à modifier les données existantes non??
    c a d tu cherche à récupérer un code et les autre textbox se remplie et tu peux ensuite porter des modifications c'est ça non ??
    si c'est le cas tu dois ajouter un combobox qui te permet de faire le choix et puis un bouton de commande pour modifier la ligne souhaitée

  7. #7
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 254
    Par défaut
    Bonjour,

    Je pense que le code que vous trouverez ci-dessous pourrait vous aider :

    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
    Sub ModifFournisseur()
     
    'Compte le nombre de ligne de ma BDD
    Dim Ligne As Integer
    Ligne = Sheets("Renseignement").Range("M3:M" & Rows.Count).End(xlDown).Row
     
    'Demande le nom du fournisseur afin de trouver par la suite ses informations
    Dim Frn As String
    Frn = InputBox("Quel est le nom du fournisseur ?")
     
    For Ligne = 3 To Ligne
     
    'Boucle permettant de trouver à quelle ligne se trouve mon fournisseur
    If Frn = Cells(Ligne, 13) Then
        InfoFrn.NomFrn = Cells(Ligne, 13)
        InfoFrn.ContactFrn = Cells(Ligne, 14)
        InfoFrn.AdresseFrn = Cells(Ligne, 15)
        InfoFrn.PaysFrn = Cells(Ligne, 16)
        InfoFrn.TDLFrn = Cells(Ligne, 17)
        InfoFrn.NumFrn = Ligne
     
    End If
     
    Next
     
    InfoFrn.Show
     
    End Sub
    Le but de ce dernier est d'aller chercher les données associées à un fournisseur en fonction de celui dont on a besoin.

    Pour cela, je demande en InputBox le nom du fournisseur afin que mon formulaire puisse retrouver tout ce qu'li me faut.

    Ps : Chaque valeur trouvée est inscrite dans un TextBox.

    Bonne journée,

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Par défaut
    Voici une partie de mon programme:

    Pour simplifier je n’inclurais pas mon userform ni mes textbox. Le code s’articule comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Primate sub test()
     
    Dim l as integer
    Dim obs as worksheet, feuil1 as worksheet
     
    Set feuil1=thisworkbook.worksheets("obs")
    l=feuil1.cells(columns(1).cells.count,1).end(xlup).row +1
    Range("a" & l).value= "1"
    Range("b" & l).value= "2"
     
    End sub
    Si vous exécutez ce programme dans une feuille vous obtiendrez les valeurs 1 en A2 et 2 en B2 puis A3–B3... à chaque fois que vous allez l’exécuter.
    Mon problème est que je n’arrive pas à cibler le départ de incrémentation (ici C11) pour obtenir les valeurs 1 dans C11 et 2 dans D11 puis à chaque exécution du programme avoir 1 et 2 dans les cellules en dessous (C12-D12, C13-D13...) d’où mon End(xlup).row.

    J’espère avoir clarifié mon souhait.

    A+

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Par défaut
    Oups :

    Correction du feuil1 as worksheet
    Dim obs as woksheet, feuilobs as worksheet

    (obs= onglet et feuilobs =variable objet)

  10. #10
    Membre éprouvé
    Homme Profil pro
    Comptable
    Inscrit en
    Novembre 2018
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Novembre 2018
    Messages : 100
    Par défaut
    Votre logique d'incrémenter un If était bonne:

    Pour forcer le début à 11
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    l = Feuil1.Cells(Columns(1).Cells.Count, 1).End(xlUp).Row + 1
    If l < 11 Then
        l = 11
    End If
    Pour les colonnes C et D modifier la lettre dans les Range

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Urbaniste
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Par défaut
    Nickel 👌 john.
    Mon programme devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ...
    l=FeuilObs(columns(1).cells.count, 3).row +1
    If l<11 then
        l=11
    End if
     
    Range("c" & l).value=textbox1.value
    ' Idem pour d
     
    ....
    Il works !

    Merci pour vos réponse mais plus particulièrement à john

    [EDIT] Pas oublier de mettre cells entre feuilobs et la parenthèse

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 07/12/2016, 01h16
  2. Réponses: 4
    Dernier message: 30/08/2006, 12h17
  3. [C#][VS 2005]Ajouter des données dans un rapport CrystalReport
    Par Mast3rMind dans le forum Windows Forms
    Réponses: 2
    Dernier message: 25/07/2006, 16h24
  4. Réponses: 22
    Dernier message: 07/12/2005, 13h51
  5. ajouter des données dans une requête htttp en js
    Par jeromejanson dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/10/2005, 15h34

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