VBA : copier coller cellule avec condition doubleclick et boucle [Résolu/Fermé]

Messages postés
6
Date d'inscription
samedi 19 janvier 2013
Statut
Membre
Dernière intervention
19 janvier 2013
- - Dernière réponse : momofrai
Messages postés
6
Date d'inscription
samedi 19 janvier 2013
Statut
Membre
Dernière intervention
19 janvier 2013
- 19 janv. 2013 à 17:55
Bonjour,

je suis débutant sur les macro, je souhaiterai faire un copier coller d'une cellule avec une condition après un doubleclick et répéter cela avec une boucle :

si la cellule à droite de ma target value est egal ma target value alors copier la target value et coller sur la cellule à droite de ma target value puis repeter cela pour toutes les cellules = à ma target value et à droite de cette target value


Voici l'idée mais je n'y connais pas grand chose :

Private sub_before doubleclick (targetvalue as range)

Dim i, j As Integer

Range(i & j).Value = Target.Value

For i = 1 To 20

If Range(i & j).Value = Range(i + 1 & j) Then

Range(i & j).Select
Selection.Copy
Range(i + 1 & j).Select
acivesheet.Paste

End If
Next i

End Sub


Voilà merci d'avevance à la personne qui pourrait m'aider.



Afficher la suite 

5 réponses

Messages postés
10969
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
19 août 2019
1371
0
Merci
Bonjour,

Ce serait plutôt ceci :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i, j As Integer


i = Target.Row
j = Target.Column


For k = i To (i + 20)

If Cells(k, j).Value = Cells(k, j + 1).Value Then

Cells(k, j).Select
Selection.Copy
Cells(k, j + 1).Select
ActiveSheet.Paste

End If
Next k


End Sub

Mais je ne comprends pas l'intérêt de ta manip ! Si les 2 cellules sont égales on copie la 1ere dans la 2nde sinon on ne fait rien; donc dans tous les cas ça ne change rien aux données de départ !!!!!
Il y a quelque chose qui m'échappe !

Si tu peux éclairer ma lanterne
Messages postés
15905
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
17 août 2019
2780
momofrai
Messages postés
6
Date d'inscription
samedi 19 janvier 2013
Statut
Membre
Dernière intervention
19 janvier 2013
-
Désolé c'est la première fois que je pose une question sur ce site et je me suis trompé, j'ai donc resolu l'autre. encore désolé

Momo
Messages postés
6
Date d'inscription
samedi 19 janvier 2013
Statut
Membre
Dernière intervention
19 janvier 2013
0
Merci
Hello,

merci bcp pour ton aide, en fait j'ai oublié de présicé que mes cellules qui se suivent peuvent être égales mais avec une couleur de remplissage qui diffère.

voici ce je veux faire :

range A1 = "momo" avec remplissage jaune par exemple + un commentaire
range B1 = "momo" sans remplissage + sans commentaire

dans ce cas je veux que ma case B1 soit égal a A1 d'ou ce cpoier coller (pour avoir exactement le même remplissage et le même commentaire que A1.

Merci d'avance
Messages postés
6
Date d'inscription
samedi 19 janvier 2013
Statut
Membre
Dernière intervention
19 janvier 2013
0
Merci
Re, merci bcp, ça corresppond exactement à ce que je veux, j'ai juste inversé colonne et ligne (je m'étais mal exprimé), maintenant je trouve que le j+20 va scruter très loin (mon cas max = 20 et mon cas min = 2), en gros c'est une perte de pour mon cas min. Je souhaiterais que la boucle s'arrête dès que :

cells (i, k) et cells (i,k+1) sont différentes comme cela il n'y a pas besoin d'aller aussi loin.

Merci d'avance


----------------------------------------------------------------------------

pour info j'ai modifié colonne et ligne :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i, j As Integer


i = Target.Row
j = Target.Column


For k = j To (j + 20)

If Cells(i, k).Value = Cells(i, k + 1).Value Then

Cells(i, k).Select
Selection.Copy
Cells(i, k + 1).Select
ActiveSheet.Paste

End If
Next k


End Sub
via55
Messages postés
10969
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
19 août 2019
1371 -
Il suffit de remplacer la ligne du If par celle là
If Cells(i, k).Value <> Cells(i, k + 1).Value Then Exit Sub Else

et de supprimer le End If
ça devrait être bon
Messages postés
6
Date d'inscription
samedi 19 janvier 2013
Statut
Membre
Dernière intervention
19 janvier 2013
0
Merci
C'est parfait, merci pour tout !

Bonne soirée.

Momo