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 :

Formulaire VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Femme Profil pro
    Directeur commercial
    Inscrit en
    Mai 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 10
    Par défaut Formulaire VBA
    Bonjour,

    Pourriez vous m'aider à créer un formulaire VBA pour EXCEL. J'ai oublié tous mes cours de VBA ;(( et j'en ai besoin très rapidement... Du coup le temps de me rafraichir la mémoire, je serais à la retraite ! lol
    J'ai regardé tous les tutos disponibles, mais je vous avoue ne rien comprendre.


    J'ai un tableau un peu compliqué à lire et je souhaiterais créer un formulaire pour modifier les textes
    contenu dans ce tableau.

    J'ai effectué la partie mise en page. Mais je n'arrive pas à faire correspondre les champs avec les colonnes de mon
    tableau.

    Le nom de mon fichier est "produits"
    L'onglet ou se trouve le tableau est "produits"


    Je souhaiterais faire correspondre les différents champs voici l'impression écran.

    Nom : Capture.GIF
Affichages : 369
Taille : 120,0 Ko

    Je vous remercie TRES SINCEREMENT DE VOTRE AIDE

    bonne journée

  2. #2
    Membre habitué
    Femme Profil pro
    Directeur commercial
    Inscrit en
    Mai 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 10
    Par défaut
    je suis entrain de m'arracher les cheveux
    il n'y a personne pour m'aider ???

    je compile des trucs sur les tutos mais je n'y comprends rien

    exemple

    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
    Private Sub ComboBox1_Change()
    Dim ligne As Long
    Dim I As Integer
     
    If Me.CommandButton1.ListIndex = -1 Then Exit Sub
    ligne = Me.ComboBox1.ListIndex + 2
    combobox2ws.Cells(ligne, "B") = Ws.Cells(ligne, I + 2)
    Next I
     
     
    End Sub
     
    Private Sub CommandButton4_Click()
     
    Unload Me
     
    End Sub

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Aider est une chose, développer une application en est une autre.
    Ce forum a pour vocation de répondre à des question technique et non de se substituer à des développeurs professionnels.
    Aussi étrange que cela puisse paraitre, passer plusieurs heures pour une personnes qui nous aura oublié 10 min plus tard, ce n'est pas vraiment passionnant.
    Désolé pour ce constat un peu brutal. Je pense qu'il valait mieux te le dire que te laisser sans réponses.

  4. #4
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Bonjour,

    Effectivement, vu le bout de code que tu as récupérer, on sent bien la détresse dans ta maîtrise du VBA

    Ceci dit, je te déconseille fortement de titrer tes messages "Aidez moi SVP ... ", c'est assez irritant, et je pense que si tu arrive à formuler une bonne problématique, tu arriveras plus facilement à récupérer des réponses constructives.

    La, ton problème est trop flou pour faire quoi que ce soit, on sait à peine que tu dois remplir des combobox avec je ne sais trop quoi dedans, étant donné qu'il y a plusieurs ligne dans une colonne.

    De surcroît, j'ai l'impression que tu as copié collé plein de morceau de code provenant d'ici et la sans chercher à les comprendre, ce qui est parfaitement inutile.

    Donc nous sommes tout disposé à t'aider, du moment que tu pose une question claire et précise.

    Pour les tutoriels, tu peux commencer par la : >> Clic sur moi <<

  5. #5
    Membre habitué
    Femme Profil pro
    Directeur commercial
    Inscrit en
    Mai 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 10
    Par défaut
    Je vous remercie pour votre aide précieuse!

    Je ne pensais pas vous déranger.

    Bien à vous

  6. #6
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Mais pour l'instant, tu n'as dérangé personne, bien au contraire.

    Ce qu'il faut juste savoir, c'est qu'ici, les gens ne vont pas travailler pour toi (du moins, je ne vais pas le faire), mais auront pour vocation de t'aider dans tes démarches de programmation. Je ne suis même pas sûr qu'il s'agissent ici d'un problème de code ni même d'algorithme, mais il s'agit bien d'un problème de compréhension du VBA.

    Quant bien même tu ne comprend pas les tutoriels que tu lis, ce qui est parfaitement normal, et bien nous n'en savons pas plus ! Par exemple, tu peux poser des questions sur des points que tu n'as pas compris dans le tutoriel.

    Une démarche intéressante (selon moi), aurait été de poser des questions sur les quelques lignes de code que tu as copier, pour comprendre comment ça fonctionne. Ou alors "Comment remplir une combobox avec des données provenant d'une feuille ?" Et je t'aurais répondu quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.combobox.value = Worksheets("Produits").cells(X, Y).value
    Peut être que je me trompe sur la vocation de ce forum, mais c'est en tout cas ce que j'en pense.

    J'espère tout de même pouvoir t'aider par la suite, mais il s'agit d'abord de dégrossir ton problème, et malheureusement, je ne peux rien faire pour toi.

  7. #7
    Membre habitué
    Femme Profil pro
    Directeur commercial
    Inscrit en
    Mai 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 10
    Par défaut
    Bonsoir,

    J'ai degrossi ENORMEMENT MON PROBLEME.

    Voici le code VBA que j'ai mit.

    Mon soucis maintenant est que mon formulaire se renseigne parfaitement mais je n'arrive pas a modifier mon tableau depuis mon formulaire.

    Le voici :

    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
    Public r As Integer
     
    Private Sub UserForm_Initialize()
    Sheets("produits").Activate
    r = 2
    Call MAJ(r)
    End Sub
     
    Private Sub CommandButton3_Click() 'suivant
    r = r + 1
    Call MAJ(r)
    End Sub
     
    Private Sub CommandButton2_Click() 'precedent
    r = r - 1
    Call MAJ(r)
    End Sub
     
    Sub MAJ(r As Integer) 'mise a  jour des données
     
    Me.ComboBox1 = Sheets("produits").Cells(r, 2) 'ID
    Me.TextBox1 = Sheets("produits").Cells(r, 13) 'produits actif
    Me.TextBox2 = Sheets("produits").Cells(r, 28) 'Produit
    Me.TextBox3 = Sheets("produits").Cells(r, 31) 'Categorie
    Me.TextBox4 = Sheets("produits").Cells(r, 23) 'breve...
    Me.TextBox5 = Sheets("produits").Cells(r, 22) 'description
    Me.TextBox6 = Sheets("produits").Cells(r, 1) 'etiquette
    Me.TextBox7 = Sheets("produits").Cells(r, 3) 'URL
    Me.TextBox8 = Sheets("produits").Cells(r, 4) 'url Images
    Me.TextBox9 = Sheets("produits").Cells(r, 5) 'Prix d'achat
     
    End Sub
     
    Private Sub CommandButton4_Click() 'quitter
    Unload Me
    End Sub

    Pourriez vous m'aider ?

  8. #8
    Membre confirmé
    Homme Profil pro
    Chargé d'Ingénierie et d'Analyses en Ressources Humaines
    Inscrit en
    Novembre 2012
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'Ingénierie et d'Analyses en Ressources Humaines
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2012
    Messages : 63
    Par défaut
    Bonjour,

    A première vue, si tu compare ton code avec ce que t'as proposé Nico Chg dans le post #6, tu verras que tu as oublié de mettre le ".value" dans ta procédure MAJ.

    Merci de mettre ton code entre balise en cliquant sur #, pour en faciliter la lecture.

    Chtik

  9. #9
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Bonjour,

    Bah c'est pas mal du tout, je te conseil cependant de mettre un "garde-fou" parce qu'a force de faire "r - 1", tu vas te retrouver avec une ligne négative, et Excel n'aime pas les lignes négatives.

    Et puis pour effectuer la modification, tu peux simplement "inverser" ta fonction MAJ(r). C'est à dire qu'à la place d'assigner la valeur d'une cellule à une combobox, tu assigne la valeur d'une combobox à une cellule.

    Ceci dit j'ai un doute concernant le "r" en public, est ce que ta macro fonctionne ? Quelle est la valeur de "r", une fois que ton UF est lancé ? elle reste à 2 ? Par expérience j'utilise peu les variables public, et je déclarerais une propriété dans ton UF pour lui assigner cette variable, mais peut être que ce n'est pas nécessaire, si ton code fonctionne comme ça.

    A mon avis, tu es proche de ton but.
    Nicolas

  10. #10
    Invité
    Invité(e)
    Par défaut
    bonjour,
    en voyant ton code,je me rends compte que tu a déclaré R en publique ce qui n'est pas obligatoire si tu le déclare dans le formulaire dans las partie déclaration soit tout en haut de la partie code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim R As Long
    Private Sub UserForm_Initialize()
    R = 2
    End Sub
    de plus dans ton code MAJ tu n'as pas besoin de passe r en paramètre car il est commun à toutes les sub!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub MAJ() 'mise a jour des données
     
    Me.ComboBox1.text = Sheets("produits").Cells(r, 2).value 'ID
    Me.TextBox1 = Sheets("produits").Cells(r, 13) 'produits actif
    Me.TextBox2 = Sheets("produits").Cells(r, 28) 'Produit
    Me.TextBox3 = Sheets("produits").Cells(r, 31) 'Categorie
    Me.TextBox4 = Sheets("produits").Cells(r, 23) 'breve...
    Me.TextBox5 = Sheets("produits").Cells(r, 22) 'description
    Me.TextBox6 = Sheets("produits").Cells(r, 1) 'etiquette
    Me.TextBox7 = Sheets("produits").Cells(r, 3) 'URL
    Me.TextBox8 = Sheets("produits").Cells(r, 4) 'url Images
    Me.TextBox9 = Sheets("produits").Cells(r, 5) 'Prix d'achat
     
    End Sub
    pas besoin d'ajouter Value car c'est la valeur prise par défaut mais pour la lisibilité!
    pour CommandButton2_Click il faut tester la valeur de R car tu peux afficher le titre (R=1) ou même avoir une erreur (R=0)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private Sub CommandButton2_Click() 'precedent
    r = r - 1
    if r<2 then r=2
    Call MAJ(r)
    End Sub
    il faut envisager un bouton Save qui fait presque la même chose que Maj mais en inversant les TextBox et Sheets("produits").Cells

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Sheets("produits").Cells(r, 5) =Me.TextBox9 'Prix d'achat
    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
    dim r As Integer
     
    Private Sub UserForm_Initialize()
    Sheets("produits").Activate
    r = 2
    Call MAJ()
    End Sub
     
    Private Sub CommandButton3_Click() 'suivant
    r = r + 1
    Call MAJ()
    End Sub
     
    Private Sub CommandButton2_Click() 'precedent
    r = r - 1
    if r<2 then r=2
    Call MAJ()
    End Sub
     
    Sub MAJ() 'mise a jour des données
     
    Me.ComboBox1 = Sheets("produits").Cells(r, 2) 'ID
    Me.TextBox1 = Sheets("produits").Cells(r, 13) 'produits actif
    Me.TextBox2 = Sheets("produits").Cells(r, 28) 'Produit
    Me.TextBox3 = Sheets("produits").Cells(r, 31) 'Categorie
    Me.TextBox4 = Sheets("produits").Cells(r, 23) 'breve...
    Me.TextBox5 = Sheets("produits").Cells(r, 22) 'description
    Me.TextBox6 = Sheets("produits").Cells(r, 1) 'etiquette
    Me.TextBox7 = Sheets("produits").Cells(r, 3) 'URL
    Me.TextBox8 = Sheets("produits").Cells(r, 4) 'url Images
    Me.TextBox9 = Sheets("produits").Cells(r, 5) 'Prix d'achat
     
    End Sub
     
    Private Sub CommandButton4_Click() 'quitter
    Unload Me
    End Sub

  11. #11
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Je me posais justement une question dessus, rdurupt.

    Quelle est la valeur de R au début de l'instruction "CommandButton2_Click()" ? Est ce que la valeur reste à 2 ? Ne se réinitialise t'elle pas ?

    Il me semblait qu'a la fin d'une instruction, toutes les variables se réinitialisait. C'est pourquoi je préfère déclarer des propriétés dans les UF, comme ça je suis sûr de garder leurs valeurs d'une macro à l'autre.

  12. #12
    Invité
    Invité(e)
    Par défaut
    il la fixe à 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
    Sheets("produits").Activate
    r = 2
    Call MAJ()
    End Sub
    mais vue que r est en tête de gondole il n'y à pas besoin de le passer en paramètre, mais je te rejoins sur les valeur négative!

  13. #13
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2014
    Messages : 352
    Par défaut
    Je prend note, merci !

Discussions similaires

  1. [VBA-E]formulaire VBA ??
    Par plante.douce dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/04/2006, 20h24
  2. Réponses: 2
    Dernier message: 17/03/2006, 18h15
  3. Réponses: 3
    Dernier message: 23/01/2006, 10h10
  4. Pb pour verouillé les controles d'un formulaire (VBA)
    Par Celia1303 dans le forum Access
    Réponses: 12
    Dernier message: 24/10/2005, 11h19
  5. formulaire vba/acess
    Par Julia82 dans le forum Access
    Réponses: 3
    Dernier message: 07/09/2005, 11h24

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