Copier coller avec condition

Bonjour,

Je veux faire un copier coller des Num Immo dans la feuille 1 dans la feuille 2 et 3. Par contre

Si le cout dans la feuille 1 est égale au cout c1 alors copier les Num immo correspondant dans immo ( feuille 2)

Si le cout dans la feuille 1 est égale au cout c2 alors copier les Num immo correspondant dans immo ( feuille 3)

Donc je veux comparer le contenu de la plage avec une seule cellule qui est cout c1 ou cout c2 ( je veux la macro qui fais ça avec la condition )

j'ai essayé de faire

If sheets("feuille1").Range("B2:B7) = sheets("feuille2).Range("B2") then

Mais j'ai un soucis de compatibilité

Merci bien par avance

38test.xlsx (8.37 Ko)

Bonjour,

Une solution

67test.xlsm (16.56 Ko)

A+

ça marche !! MERCI

Sauf que je veux que le "coller" dans feuille 2 et 3 se fasse par exemple à partir de la D4 en descendant D5 D6....

et puis qu'est ce que je dois changer ici

LigneAjout = F.Range("D" & Rows.Count).End(xlUp).Row + 1

F.Range("D" & LigneAjout) = .Range("D" & i)

si jamais le coller n'est pas dans la colonne D je change la dernière ligne ?

Merci encore

je veux que le "coller" dans feuille 2 et 3 se fasse par exemple à partir de la D4 en descendant D5 D6....

Il suffit de préciser le numéro de la première ligne lors de l’initialisation de la variable puis d’incrémenter ce numéro à chaque fois qu’une donnée est affectée au tableau.
Sub Test()
Dim F As Worksheet
Dim DerLig As Long, i As Long, LigneAjout2 As Long, LigneAjout3 As Long
    LigneAjout2 = 4: LigneAjout3 = 4
    With Worksheets("Feuil1")
        DerLig = .Range("B" & Rows.Count).End(xlUp).Row
        For i = 2 To DerLig
            If .Range("B" & i) = Worksheets("Feuil2").Range("B2") Then
                Worksheets("Feuil2").Range("D" & LigneAjout2) = .Range("D" & i)
                LigneAjout2 = LigneAjout2 + 1    
            ElseIf .Range("B" & i) = Worksheets("Feuil3").Range("B2") Then
                Worksheets("Feuil3").Range("D" & LigneAjout3) = .Range("D" & i)
                LigneAjout3 = LigneAjout3 + 1
            Else
                Exit For
            End If
        Next i
    End With
End Sub

si jamais le coller n'est pas dans la colonne D ?

Exemple pour la colonne E, feuille 2
Worksheets("Feuil2").Range("E" & LigneAjout2) = .Range("D" & i)

Idem pour la feuille 3

A+

Bonjour,

J'ai tester et changer selon colonne et ça marche !!

Par contre je veux ajouter une seconde condition ou je me plante . En effet je veux faire le copier coller avec la condition précédente ( quand le côut est égale au cout imo dans l'autre feuille ) mais aussi quand le commentaire est différent de OK ( colonne commentaire ajoutée )

j'ai essayé avec And .Range("F" & i).value <> "ok" et ça plante dans la seconde feuille

PS : mes commentaire sont un liste déroulante de choix , c'est juste que j'ai pas pu la mettre dans le fichier.

Merci de me vérifier

39test.xlsm (17.20 Ko)

Bonjour,

Je veux faire le copier coller avec la condition précédente ( quand le côut est égale au cout imo dans l'autre feuille ) mais aussi quand le commentaire est différent de OK .

Il suffit de rajouter cette nouvelle condition avant de faire le traitement sur les coûts (si le commentaire n'est pas OK, alors je fais le traitement sur les coûts).

J'ai remodelé le code pour le rendre plus fluide.

48test.xlsm (19.54 Ko)

A+.

Bonjour,

Oui ça marche !

Merci bien

Bonjour,

Je poste ici car j'ai un problème similaire

Je veux suivant la valeur d'une cellule mettre une autre cellule en couleur suivant le résultat

Mon souci est que la condition And ne fonctionne pas (une fourchette)

Si vous pouviez m'indiquer pourquoi, merci

Cordialement

' couleur Macro
'
Sub couleur()
    Sheets("comparatif").Select
    finligne = 128          ' ActiveSheet.UsedRange.Rows.Count
    numligne = 14

    While numligne < finligne ' boucle debut ligne et fin de ligne

        If Range("M" & numligne).Value <= 50 Then ' si cellule inf ou egale a 50
            Range("B" & numligne, "B" & numligne).Interior.Color = RGB(128, 255, 255)
        ElseIf Range("M" & numligne).Value > 50 Or Range("M" & numligne).Value <= 70 Then ' si sup a 50 et inf= a 70
            Range("B" & numligne, "B" & numligne).Interior.Color = RGB(192, 96, 0)
        End If
        If Range("M" & numligne).Value > 70 Then
            Range("B" & numligne, "B" & numligne).Interior.Color = RGB(50, 200, 100)
        End If
        ' If Range("M" & numligne).Value > 80 Then
           '  Range("B" & numligne, "B" & numligne).Interior.Color = RGB(50, 200, 100)
        ' End If
        numligne = numligne + 1

    Wend

End Sub

Bonjour

A essayer (non testé)

Sub couleur()
  Sheets("comparatif").Select
  finligne = 128          ' ActiveSheet.UsedRange.Rows.Count
  numligne = 14

   While numligne < finligne ' boucle debut ligne et fin de ligne

       If Range("M" & numligne).Value <= 50 Then           ' si cellule inf ou egale a 50
          Range("B" & numligne).Interior.Color = RGB(128, 255, 255)
       ElseIf Range("M" & numligne).Value <= 70 Then       ' si inf= a 70
          Range("B" & numligne).Interior.Color = RGB(192, 96, 0)
       Else                                                ' Dans tous les autres cas
           Range("B" & numligne).Interior.Color = RGB(50, 200, 100)
       End If
       ' If Range("M" & numligne).Value > 80 Then
         '  Range("B" & numligne, "B" & numligne).Interior.Color = RGB(50, 200, 100)
      ' End If
      numligne = numligne + 1

   Wend

End Sub

Bonjour,

Je regarde merci

bonsoir la condition est bonne,

remplament de or par and

désolé je ne vois pas le bouton résolu

Bonsoir

ThierryC a écrit :

désolé je ne vois pas le bouton résolu

heureusement car ce n'est pas toi qui a ouvert ce sujet

Celui-ci est réservé (entre autre) à l'initiateur du post

Rechercher des sujets similaires à "copier coller condition"