Bienvenue sur les forums conseil & création · S'enregistrer

Se connecter automatiquement

Forums » Tableurs et logiciels de gestion (Money, Excel, Open Office...) » aidez moi pour les macros · Envoyer le lien

Par lazarojule, le 05 Sep 2005, 14:46 Revenir en haut de page Répondre en citant

Bonjour à tous, je vous montre ma macro:

Private Sub TextBox1_Change()
Range("A2").Select
ActiveCell.FormulaR1C1 = ""
Range("A2").Select
Selection.Font.ColorIndex = 5
Selection.Font.Bold = True
End Sub
Private Sub TextBox2_Change()
Range("B2").Select
ActiveCell.FormulaR1C1 = ""
End Sub

Private Sub TextBox3_Change()
Range("C2").Select
ActiveCell.FormulaR1C1 = ""
End Sub

Private Sub TextBox4_Change()
ActiveCell.FormulaR1C1 = ""
Range("D2").Select
ActiveCell.FormulaR1C1 = ""
Range("D2").Select
Selection.NumberFormat = "#,##0.00 $"
End Sub



Pourriez vous me dire qu'est ce qui cloche. En fait j'aimerai que ma macro se lance à l'aide d'un bouton d'action, une fois lancée, un tableau apparaitrait avec des champs à remplir (4 comme vous le voyez sur le code ci desssus), et ce que je remplis, viendrait s'imputer dans mon tableau au bon endroit lorsque je valide, à l'aide du bouton d'action. J'ai déja créer ce tableau avec laide de MVB, mais quand je remplis mon tableau, la validation ne se fait pas, je clic sur valider et rien ne se passe.Je pense qu'il y des erreurs dans mes codes, mais je ne vois pas où, merci d'avance à ceux qui liront et comprendront (je ne suis peut être pas claire dans mes exlications) ce message. Very Happy
Par Cédric, le 05 Sep 2005, 20:42 Revenir en haut de page Répondre en citant

Bonsoir,

Je comprends ce que tu veux faire mais je ne vois pas du tout le rapport avec la (les!) macro... ?

Citation:
j'aimerais que ma macro se lance à l'aide d'un bouton d'action

Où est la macro affectée à ce bouton ? Dans le code cité, elle n'apparaît pas. On y retrouve 4 fonctions TextBox[x]_Change, c'est à dire que ces fonctions sont exécutées lorsque les TextBox (1 à 4) sont modifiés.

En gros dans ton code, chaque modification des TextBox exécute les mêmes actions :

  • Range("A2").Select
    Arrow Sélection d'une des 4 cellules, ici la cellule A2 pour le champ 1 (TextBox1)

  • ActiveCell.FormulaR1C1 = ""
    Arrow Cellule en cours (donc la cellule qui vient d'être sélectionnée), ici A2 = "" ... donc vide !


Donc deux solutions...

  1. Affecter les champs aux cellules dès leur modification. Donc pour chacune de tes fonctions, affecter la valeur du TextBox (au lieu de vider la cellule Laughing ) ce qui donne :

    Citation:
    Private Sub TextBox1_Change()
    Range("A2").Select
    ActiveCell.FormulaR1C1 = TextBox1.value
    Selection.Font.ColorIndex = 5
    Selection.Font.Bold = True
    End Sub

    Private Sub TextBox2_Change()
    Range("B2").Select
    ActiveCell.FormulaR1C1 = TextBox2.value
    End Sub

    Private Sub TextBox3_Change()
    Range("C2").Select
    ActiveCell.FormulaR1C1 = TextBox3.value
    End Sub

    Private Sub TextBox4_Change()
    Range("D2").Select
    ActiveCell.FormulaR1C1 = TextBox4.value
    Selection.NumberFormat = "#,##0.00 $"
    End Sub


  2. Affecter les champs aux cellules en cliquant sur un bouton. Dans ce cas tu peux commencer par supprimer les fonctions citées puisqu'elles ne servent à rien. Il faut ensuite créer une seule macro à affecter à un bouton, par exemple :

    Citation:
    Sub Bouton_QuandClic()
    ' -------------- champ 1
    Range("A2").Select
    ActiveCell.FormulaR1C1 = TextBox1.value
    Selection.Font.ColorIndex = 5
    Selection.Font.Bold = True
    ' -------------- champ 2
    Range("B2").Select
    ActiveCell.FormulaR1C1 = TextBox2.value
    ' -------------- champ 3
    Range("C2").Select
    ActiveCell.FormulaR1C1 = TextBox3.value
    ' -------------- champ 4
    Range("D2").Select
    ActiveCell.FormulaR1C1 = TextBox4.value
    Selection.NumberFormat = "#,##0.00 $"
    End Sub
Par lazarojule, le 06 Sep 2005, 08:19 Revenir en haut de page Répondre en citant

Merci beaucoup Cédric pour ton aide, ce que je voulais s'affiche bien. Cependant lorsque j'appuie sur le bouton valider, il ne fait aucun effet. Hors j'aimerai qu'il fasse la même action qu'une touche entrée dans un tableur, c'est à dire faire disparaitre ma boite en ayant valider ce que j'ai insérer et en passant à la ligne suivante. Actullement je suis obligé de cliquer sur la croix pour quitter la boite et lorsque je réactionne la macro elle m'écrit toujours sur la même ligne.Je veux juste que la touche valider correspond à un saut de ligne afin de d'entrée une série.
Encore merci pour ton aide. Very Happy
Par Cédric, le 06 Sep 2005, 11:11 Revenir en haut de page Répondre en citant

Salut,

NB : comme ce sont les mêmes fonctions j'ai supprimé ton dernier post puisqu'il apparaît juste au dessus.

Bref, on reprend depuis le début... si tu veux que ta macro écrive après la dernière ligne non-vide du tableau, ça va être un peu plus compliqué puisqu'il faut d'abord rechercher cette ligne.

Arrow Vois avec cet exemple (fichier Excel zippé)
Par lazarojule, le 06 Sep 2005, 15:45 Revenir en haut de page Répondre en citant

Super, vraiment je te remercie, c'est pas évident, je découvre un peu les macros. Mais j'ai un dernier soucis, et après promis je ne t'embête plus. En fait j'ai vu qu'avec la barre d'outil formulaire on pouvait associer un bouton à une macro, ce que je fais, je crée le bouton, excel me demande de sélectionner la macro que je veux, je le fais, et lorsque je clic sur ce nouveau bouton, j'ai un sablier qui apparait durant 2secondes et rien ne se passe, pourtant mes macros marchent bien. Lorsque j'appuie sur la touche lecture dans MVB il met en route la macro dans mon tableur excel, donc sa marche bien, sauf le bouton.
Pour insérer le bouton j'ai suivie les instructions de ce site:

http://www.er.uqam.ca/merlin/xw999998/fr/fxlmac.htm#fxlmacattacher
Par Cédric, le 06 Sep 2005, 19:52 Revenir en haut de page Répondre en citant

Salut,

Pas de soucis, je réponds quand jai le temps... sinon à quoi servirait le forum Wink

Sinon, quel est le contenu de la macro ?
Par lazarojule, le 07 Sep 2005, 07:54 Revenir en haut de page Répondre en citant

[ Edit par Cédric : pour le code, il s'agit de la macro CommandButton1_Click() de l'exemple ]

J'en ai une autre mais qui est du même format, sauf qu'il y a text box en plus, mais sinon ce sont les mêmes. Donc dans MVB, quand je me met sur userform ou les codes et que je clic sur l'icone de lecture dans la barre d'outil, il me lance ma macro dans mon tableur, jusque là pas de problèmes, mais lorsque je veux associer un bouton à ma macro, après la création du bouton,(malgré qu'il me demande de choisir une macro dans la liste), rien ne se passe, il semble qu'aucune macro n'y soit associée. Crying or Very sad


PS: désolé de répondre aussi tard, mais c'est pour le boulot, alors chez moi je ne m'occupe pas de ça. Wink
Par Cédric, le 07 Sep 2005, 11:30 Revenir en haut de page Répondre en citant

Ok, c'est la macro que tu as récupéré du fichier que je t'ai mis plus haut...

Il ne faut pas associer ton bouton (dans Excel) à la macro CommandButton1_Click. Cette macro correspond au bouton Ajouter de la UserForm (dans mon exemple).

Citation:
quand je me met sur userform ou les codes et que je clic sur l'icone de lecture dans la barre d'outil, il me lance ma macro dans mon tableur

En fait, quand tu cliques sur lecture, il affiche simplement la UserForm

Citation:
mais lorsque je veux associer un bouton à ma macro, après la création du bouton,(malgré qu'il me demande de choisir une macro dans la liste), rien ne se passe, il semble qu'aucune macro n'y soit associée.

Ton bouton (dans Excel) doit donc également afficher la Userform ! Pas Exécuter la macro que tu sites !

  1. Quand tu places un nouveau bouton sur ta feuille Excel, il va te demander de choisir une macro. Il te propose un nom par défaut (Bouton1_QuandClic) pour la macro (qui n'existe pas encore).
  2. Choisis un nom de macro puis cliques sur Nouvelle pour la créer.
  3. Un nouveau module va s'ouvrir dans VBA avec ta nouvelle fonction (encore vide) dans laquelle tu dois ajouter le code qui affichera la UserForm (UserForm1.show par exemple) :
    Code:
    Sub Bouton1_QuandClic()
    UserForm1.show
    End Sub
Par lazarojule, le 07 Sep 2005, 11:32 Revenir en haut de page Répondre en citant

En fait je viens de me rendre compte que pour mon autre macro qui comporte 4textbox en plus, le texte ne se remplie que sur 2 lignes. A la 1ère tous va bien, on passe à la seconde ligne, là ok aussi, mais pour une autre saisis, la macro ne passe pas à la 3e, mais reste à la seconde ligne.
Je mets les codes:


Code:
Private Sub CommandButton1_Click()

If (Range("A6") = "") Then
    Range("A6").Select
Else: Range("A5").End(xlDown).Offset(1, 0).Select
End If

If (TextBox1.Value <> "") Then
    ActiveCell.Value = TextBox1.Value
    Selection.Offset(0, 1).Select
    ActiveCell.Value = TextBox2.Value
    Selection.Offset(0, 1).Select
    ActiveCell.Value = TextBox9.Value
    Selection.Offset(0, 1).Select
    ActiveCell.Value = TextBox10.Value
    Selection.Offset(0, 1).Select
    ActiveCell.Value = TextBox5.Value
    Selection.Offset(0, 1).Select
    ActiveCell.Value = TextBox6.Value
    Selection.Offset(0, 1).Select
    ActiveCell.Value = TextBox7.Value
    Selection.Offset(0, 1).Select
    ActiveCell.Value = TextBox11.Value
    Selection.Offset(0, 1).Select
    TextBox1.Value = ""
    TextBox2.Value = ""
    TextBox9.Value = ""
    TextBox10.Value = ""
    TextBox5.Value = ""
    TextBox6.Value = ""
    TextBox7.Value = ""
    TextBox11.Value = ""
    TextBox1.SetFocus
Else
    MsgBox ("Vous devez renseigner le champ « " + Label1.Caption + " »")
    TextBox1.SetFocus
End If

End Sub


PS: mes textbox sont bien numérotés, c'est parce que j'en ai supprimé et recréé, ce qui fait qu'elles ont se sont vu attribuées un autre numéro donc 9=3; 10=4; 11=8
Et ma première ligne commence à A5
Par Cédric, le 07 Sep 2005, 11:52 Revenir en haut de page Répondre en citant

Citation:
En fait je viens de me rendre compte que pour mon autre macro qui comporte 4textbox en plus, le texte ne se remplie que sur 2 lignes. A la 1ère tous va bien, on passe à la seconde ligne, là ok aussi, mais pour une autre saisis, la macro ne passe pas à la 3e, mais reste à la seconde ligne.
[...]
Et ma première ligne commence à A5

La cellule A5 n'est pas vide ?
Par lazarojule, le 07 Sep 2005, 12:37 Revenir en haut de page Répondre en citant

J'ai trouvé Very Happy , la cellule A5 et A4 était fusionné ensemble, j'ai suppimer la fusion (de toute façon mon tableau est plus simple ainsi), maintenant j'ai:

If (Range("A5") = "") Then
Range("A5").Select
Else: Range("A4").End(xlDown).Offset(1, 0).Select
End If


Tout marche, sauf évidemment ce problème de bouton qui ne s'associe pas du tout avec ma macro.
Par Cédric, le 07 Sep 2005, 12:48 Revenir en haut de page Répondre en citant

Citation:
Tout marche, sauf évidemment ce problème de bouton qui ne s'associe pas du tout avec ma macro.

As-tu vu mon message (j'ai répondu à ta première question, quelques messages plus haut) ?
Par lazarojule, le 07 Sep 2005, 13:27 Revenir en haut de page Répondre en citant

Escuses moi, je n'avais pas vue. Maintenant tous marche super, et tu y es pour beaucoup. Je te remercie beaucoup, beaucoup, et pour ma 1ère fois sur ce forum je ne suis pas déçue, je reviendrai c'est sûr. Wink
Par Cédric, le 07 Sep 2005, 13:34 Revenir en haut de page Répondre en citant

Pas de problèmes Wink

Au plaisir

Forums » Tableurs et logiciels de gestion (Money, Excel, Open Office...) » aidez moi pour les macros · Envoyer le lien