Récupération variable avec un double click

Fermé
Shining - 23 août 2013 à 19:08
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 - 24 août 2013 à 15:08
Bonjour CCM !

J'ai un petit soucis, j'ai besoin de faire une feuille Excel pour géré un solde, j'ai réussi a faire se que je voulais (rien de bien compliqué :p) sauf une chose.

Je voudrais lors d'un double clic (ou autre chose comme la fermeture du fichier peu importe) sur A1, récupéré la valeur contenu dans A2. Ainsi en A2 je mettrais la somme de mes gains et mes dépenses, et lorsque je clic ou que je ferme excel, A1 recopie la valeur de A2 !

J'ai trouvé une piste avec une macro VBA :

"Private Sub Worksheet_BeforeDoubleClick"

Ensuite j'ai trouvé une fonction "copier/coller" mais j'ai pas reussi a l'utilisé :
Worksheets("Sheet1").Range("J2").Select
Selection.Copy
Worksheets("Sheet1").Range("J1").Paste


Je n'y connais absolument rien a excel ni au macro, j'ai trouvé ça en cherchant ma réponse seul mais j'ai pas réussi a l'exploité pour obtenir mon résultat. (j'ai fait l'effort de cherché avant de venir écrire ici au moins ^^)

Merci a tous pour votre lecture et bon week end !
A voir également:

7 réponses

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
23 août 2013 à 20:11
Bonjour,

Un exemple de code à placer dans le module ThisWorkbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With Me.Worksheets("Feuil1") 'Nom de feuille à adapter
        .Range("A1").Value = .Range("A2").Value
    End With
    Me.Save
End Sub

Avant la fermeture du classeur, la valeur de A2 est copiée dans A1 et le classeur est enregistré.

A+
1
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
23 août 2013 à 21:30
Lorsque tu fais "clic droit" sur la Feuil1, tu visualises le code de la feuille.
Or, le code que je t'ai transmis doit être placé dans le module du classeur (ThisWorkbook ).
Commence par Alt-F11 pour accéder à VBE et tu verras apparaitre le projet VBA.

A+
1
Bonjour.
Merci beaucoup ! mais il semble que cela ne fonctionne pas.

Je sais pas si je le fais mal, mais je fais "clic droit" sur ma Feuil1, Visualisé le code, je copie/colle la macro, et j'enregistre le tout en Xlsm.

Quand je fais une simulation, A1 ne copie rien a A2, ni le contraire.

Je fais quelque chose de pas correcte ?

Merci !
0
Oups désolé je savais pas :/

J'ai donc fait un module pour le classeur et non pour la feuille, mais je n'arrive pas a le faire fonctionné apparement :
Screen http://nsa33.casimages.com/img/2013/08/23/130823095016975634.png

Désolé et merci pour tes réponses !
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
23 août 2013 à 22:24
Encore raté ! Le module que tu as crée est un module standard.
Pourtant, sur l'image, on voit bien le module ThisWorkbook.
Clique donc dessus et que la lumière vienne à toi.

A+
0
Désolé mais j'y connais rien dans ce logiciel ni en VBA, tu parle des propriété de mon module ?
Dans mon module "teste" je ne peux configuré que le nom, et dans Thisworkbook il y a beaucoup d'option et je n'en connais pas une seule.

Désolé c'est le première fois que j'utilise le VBA et surrement la dernière ^^ je suis pas trop dans la bureautique moi ^^

Merci de ton aide.
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
23 août 2013 à 22:55
Pas de panique, avec un fichier exemple ça doit le faire.
https://www.cjoint.com/c/CHxw0yyVd3Z

A+
0
Ton fichier fonctionne, mais pas le mien.
Je pense que l'erreur vient du fait que j'ai 2macro
J'ai déjà ce code moi :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E1:E99")) Is Nothing Then
Dim Rw As Long
Rw = Target.Row
Range("E" & Rw).Select
Selection.Copy
Range("G" & Rw).Select
Selection.FormulaLocal = Range("E" & Rw).Value + Range("G" & Rw).Value
Range("E" & Rw).Select
Application.CutCopyMode = False
End If
End Sub

Quand je rajoute ton code a mon fichier, cela ne fonctionne plus.
Quand je rajoute mon code a ton fichier, fonctionne pas non plus.

Possible d'exécuté 2 macro dans un code ?

EDIT : ERREUR DE MA PART, j'écoute rien moi je n'apprend pas de mes erreurs ! j'avais mis le bout de code dans la feuille et non dans le classeur, alors que tu m'avais justement mis en garde dans ton ancien post.
Merci a toi pour ton aidé, néanmoins la question est toujours valable, plusieurs macro dans une feuille, c'est possible en les mettant à la suite ? Je vais essayé de prendre l'option BeforeClose et d'y mètre la date pour voir si j'y arrive. Merci en tous cas.
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
24 août 2013 à 09:56
Bonjour,

La procédure évènementielle que tu m'indiques sert simplement à cumuler en colonne G les valeurs saisies en colonne E. Elle ne gène en rien l'autre procédure.
Tu peux même l'alléger un peu (voir l'exemple)
https://www.cjoint.com/c/CHyj3xMsZIt
A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
24 août 2013 à 14:15
Tu n'as pas besoin d'une macro pour faire cela.
Il suffit de placer la formule suivante en A2
=SI(A1<0;"Il manque "&ABS(A1)&" €";SI(A1>0;"Il y a " & ABS(A1) & " € de trop";""))

Pour satisfaire ma curiosité, peux-tu me dire quel était le problème lié à la question précédente ?

A+
0
Le problème sur les "2 macro" ?
Aucun, j'ai mis un edit a la fin qui explique mon erreur :

EDIT : ERREUR DE MA PART, j'écoute rien moi je n'apprend pas de mes erreurs ! j'avais mis le bout de code dans la feuille et non dans le classeur, alors que tu m'avais justement mis en garde dans ton ancien post.
Merci a toi pour ton aidé, néanmoins la question est toujours valable, plusieurs macro dans une feuille, c'est possible en les mettant à la suite ? Je vais essayé de prendre l'option BeforeClose et d'y mètre la date pour voir si j'y arrive. Merci en tous cas.


Merci pour =SI(A1<0;"Il manque "&ABS(A1)&" €";SI(A1>0;"Il y a " & ABS(A1) & " € de trop";"")) c'est super !
0
Une dernière question :
J'ai une fonction Aujourdhui() dans ma case A1 qui est donc 24/08/2013


J'ai utiliser ton code que tu m'a fournis pour récupéré la dernière date de modification en ciblant la copie a la fermeture sur la fonction aujourdhui sur A1

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    With Me.Worksheets("Feuil1")
        .Range("A2").Value = .Range("A1").Value
    End With
    Me.Save
End Sub


A chaque fermeture du fichier, A2 recupère la date.

Sur une autre cellule A3, j'utilise cette fonction

=CONCATENER("MON TEXTE ";A2;" MON TEXTE" )


En principe je devrais avoir dans A3 : MON TEXTE (dernière date de modification contenu dans A2) MON TEXTE.
Mais j'ai MON TEXTE 41510 MON TEXTE. au lieu de MON TEXTE 24/08/2013 MON TEXTE.

Donc comment reglé ce soucis ?
0
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
24 août 2013 à 15:08
Bon, ça va parce que c'est la dernière !
=CONCATENER(" MON TEXTE ";TEXTE(A2;"JJ/MM/AAA");" MON TEXTE ")


A+
0