VBA : copier coller cellule avec condition doubleclick et boucle

Résolu/Fermé
momofrai Messages postés 6 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 19 janvier 2013 - 19 janv. 2013 à 13:23
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.



5 réponses

via55 Messages postés 14403 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 24 avril 2024 2 703
19 janv. 2013 à 14:04
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
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 janv. 2013 à 15:42
0
momofrai Messages postés 6 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 19 janvier 2013
19 janv. 2013 à 16:33
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
0
momofrai Messages postés 6 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 19 janvier 2013
19 janv. 2013 à 16:05
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
0
momofrai Messages postés 6 Date d'inscription samedi 19 janvier 2013 Statut Membre Dernière intervention 19 janvier 2013
19 janv. 2013 à 16:32
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
0
via55 Messages postés 14403 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 24 avril 2024 2 703
19 janv. 2013 à 17:01
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
0

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

Posez votre question
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
C'est parfait, merci pour tout !

Bonne soirée.

Momo
0