VBA : copier coller cellule avec condition doubleclick et boucle

Résolu
momofrai Messages postés 6 Statut Membre -  
momofrai Messages postés 6 Statut Membre -
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

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    0
    1. momofrai Messages postés 6 Statut Membre
       
      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
  3. momofrai Messages postés 6 Statut Membre
     
    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
  4. momofrai Messages postés 6 Statut Membre
     
    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
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. momofrai Messages postés 6 Statut Membre
     
    C'est parfait, merci pour tout !

    Bonne soirée.

    Momo
    0