Récupération variable avec un double click

Shining -  
Gyrus Messages postés 3360 Statut Membre -
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 3360 Statut Membre 526
 
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 3360 Statut Membre 526
 
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
Shining
 
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
Shining
 
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 3360 Statut Membre 526
 
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
Shining
 
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 3360 Statut Membre 526
 
Pas de panique, avec un fichier exemple ça doit le faire.
https://www.cjoint.com/c/CHxw0yyVd3Z

A+
0
Shining
 
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 3360 Statut Membre 526
 
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 3360 Statut Membre 526
 
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
Shining
 
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
Shining
 
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 3360 Statut Membre 526
 
Bon, ça va parce que c'est la dernière !
=CONCATENER(" MON TEXTE ";TEXTE(A2;"JJ/MM/AAA");" MON TEXTE ")


A+
0