Donner à une cellule la valeur de la cellule cliquée

  • Initiateur de la discussion Eric D
  • Date de début
E

Eric D

Guest
Bonsoir les Cracks et les Crackettes,

Question :
A chaque click sur la même cellule (A7), je souhaite faire défiler successivement les valeurs contenues dans trois autres cellules (B7, C7, D7). Cette valeur sera donc affectée à la cellule A7.

Il peut arriver qu'une ou deux de ces cellules soient vides et dans ce cas, seules les valeurs des cellules non vides défileront.

J'espère avoir été assez clair dans mes souhaits et j'espère que vous pourrez me donner une solution.

Merci d'avance à ceux qui se pencheront sur mon soucis.

Eric
 
L

LaurentTBT

Guest
Salut Eric et bonsoir à tous le forum.

Voici ce que je te propose en pièce jointe. Je crois que cette macro répond à ton soucis. Il s'agit d'une macro évenementielle à recopier dans le module correspondant à la feuille de classeur concernée.
Attention, je ne suis pas un pro, donc mon code n'est peut-être pas écrit dans les règles de l'art. Tout commentaire venant des "cracks" et des "crackettes" est donc le bienvenu pour que je me perfectionne.

A plus
 

Pièces jointes

  • ValeursSuccessives.zip
    10.4 KB · Affichages: 25
@

@Christophe@

Guest
Bonsoir

Ben Laurent, jolie début, nous verons bien ce que les crack vont nous amélioré, en tous cas je suis curieux.

J'avais moi même ma petite idée mais je dois encore testé, lol

Bonne soirée

@Christophe@
 
@

@Christophe@

Guest
Re

Laurent pour ton problème de réinitialisation nous pouvons toujours utilisé l'évenement BeforeRightClick et désactivé le menu du clic gauche, comme suite:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Static NombreClick As Integer
If Target.Address = "$A$7" Then
'on ne lance la procèdure que si le double click est effectué sur la cellule A7

If Range("B7") = "" And Range("C7") = "" And Range("D7") = "" Then Exit Sub
' permet de sortir de la macro si les 3 cellules sont vides, car sinon,
' la boucle suivante tournerait sans fin!

Range("A7") = ""
Do Until Range("A7") <> "" 'Permet de passer à la valeur suivante si cellule vide
If IsEmpty(NombreClick) Then
NombreClick = 1
ElseIf NombreClick = 3 Then
NombreClick = 1
Else
NombreClick = NombreClick + 1
End If
' NombreClick premettra de savoir quelle cellule copier
Range("A7") = Range("B7").Cells(1, NombreClick)
Loop

'Range("A1").Select 'Pas super, mais permet de réinitialiser le prochain click
End If

End Sub


Bonne soirée


@Christophe@
 
L

LaurentTBT

Guest
Salut Christophe.

J'étais partis initialement sur la procédure
Private Sub Worksheet_BeforeDoubleClick, car je me doutais bien qu'avec SelectionChange, j'aurais des problèmes pour le click suivant (car une même cellule ne peut être selectionnée 2 fois de suite)

Avec BeforeDoubleClick, j'avais un autre problème: à la fin, la cellule restait activée en mode écriture.
Je n'avais absolument pas pensé à cet argument CANCEL. Bien vu de ta part.

Eric a donc maintenant le choix entre 3 solutions:Soit lancer le recopie par click gauche, avec selection d'une autre cellule à la fin, (ma première solution), soit par click droit, soit par double click!

@+
 
@

@+Thierry

Guest
Vive la Belgique !!!

@+Thierry

PS Pour les évènement ne pas oublier aussi que l'on peut affecter une macro à une touche du clavier... suffit de mettre un mode d'emploi !! lol

Sinon rien à dire ni encore moins à redire au code de Laurent (sauf juste qu'il était pas besoin d'avoir 16 feuilles !! mais bon c'est vraiment pour avoir qelque chose à dire !!) lol
 
E

Eric D

Guest
Alors là, je dis bravo !

J'avais envoyé cette demande sans même savoir si celle-ci était réalisable, mais je vois que rien ne vous résiste.

Encore merci à vous tous et ... au prochain problème !

Eric
 
M

michel

Guest
Bonjour,

Avec Vba, comment ecrire dans différentes feuilles d'un même WOrkSheet sans faire un select de de ces feuilles, ceci pour que l'affichage reste sur la feuille n°1 mais que des données soient modifiées dans les feuilles 3,4,..
sans que ces n'apparaissent à l'écran ??
Merci
 
@

@+Thierry

Guest
Bonjour Michel, et le gens de ce fil, et le Forum


Heuh, Michel je ne sais pas par où tu es arrivé sur ce fil, mais tu es dans un forum et nous avons quelque règles (Voir La Charte) car ce fil de discussion n'a rien à voir avec ta question.

Ceci dit, je pense déjà que tu veux dire par :
"comment ecrire dans différentes feuilles d'un même WOrkSheet"

Commnet écrire dans différentes feuille d'un même WORKBOOK... (c'est important de bien nommer les objets car VB et VBA sont le "Language des Objets"

Sinon ta question est simple, et voici une possibilité de base :

Sub Macro1 ()
Sheets("Feuil2").Range("A1").Value = "Ceci est la valeur de la Feuil1 A1 :"
Sheets("Feuil2").Range("B1").Value = Sheets("Feuil1").Range("A1").Value
End Sub

Que l'on peut abréger de cette manière :
Sub Macro1 ()
With Sheets("Feuil2")
.Range("A1") = "Ceci est la valeur de la Feuil1 A1 :"
.Range("B1") = Sheets("Feuil1").Range("A1")
End With
End Sub

("With" puisque on travaille sur la même Feuil2... et "End With" quand on a finit de travailler dessus... Suppression de la propriété "Value" puisque c'est la Propriété par défaut de l'Objet "Range")

Voilà tu n'aura pas de Select ni de feu d'artifice à l'écran et tu restera sur l'endroit où tu te trouves (Feuil1 par exemple)

Welcome to XLD Michel et Bon Dimanche
@+Thierry
 
@

@+Thierry

Guest
Re bonjour à ce fil

Michel m'a envoyé gentillement un mail en BAL, et il est tout excusé vu qu'il est tout nouveau :)


-----Message d'origine-----
De : michel
Envoyé : dimanche 11 mai 2003 11:03
À : thierry
Objet : RE: Donner à une cellule la valeur de la cellule cliquée
[1:30005:30352]

Merci, je vais essayer.

Comment je suis arriver là, en tapant "Excell forum" dans mon moteur de
recherche (Google.be).
Je n'ai pas trouver la charte, l'URL que tu m'a envoyé me donne Url
Inconnu...
Désolé si je suis rentré avec mes gros sabots, mais je n'en n'ai pas
d'autres.....
BOnne journée

Michel


Je lui ai bien sûr répondu en lui conseillant de répondre sur le Forum et lui ai indiqué que la Charte se trouve sous la forme d'un parchemin en lien sur la droite de tout nouveau Post.

Les liens fonctionnent dans le forum, mais sont parfois tronqué dans les mails.

Voilà pour la petite histoire
bon dimanche
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
314 012
Messages
2 104 531
Membres
109 066
dernier inscrit
Tinou99