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 !

7 réponses

  1. 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
  2. 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
  3. 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
  4. 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
    1. 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
    2. 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
    3. 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
    4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 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
    1. 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
  7. 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
  8. 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