Copier sous condition ?

Bonsoir, j'ai ce code.

J'aimerais dire à ma macro que si une valeur est identique (des chiffres), ne pas la copier, merci à vous.

Sheets("Feuille2").Range("A1:A25").Copy Sheets("Feuille1").Range("A4")
Sheets("Feuille1").Select

Bonsoir

manque quelques petits renseignements

DJ FA a écrit :

si une valeur est identique

à qui ? à Quoi ? entre-elles ? avec la destination ?

A suivre

Si identique à la destination, ne pas copier cette valeur.

Bonjour,

est-ce que la comparaison est simplement une ou 2 infos dans la ligne ou sur la ligne complète?

La ligne complète.

Bonjour

Donc si j'ai compris si la destination est égale à la source on ne copie pas et si différente on copie

Tu vas passer plus de temps à comparer que de copier (ce qui n'aura aucune conséquence)

Mais si tu veux vraiment une macro ?

A te lire

Oui je veux bien, merci.

Bonjour

En voilà une (pas la meilleure mais fonctionnelle)

Option Explicit

Sub Verification()
Dim Cel As Range

  For Each Cel In Sheets("Feuille2").Range("A1:A25")
    If Application.CountIf(Sheets("Feuille1").Range("A4:A28"), Cel) = 0 Then Exit For
  Next Cel
  If Not Cel Is Nothing Then                  ' Une cellule au moins différente
    Sheets("Feuille2").Range("A1:A25").Copy Sheets("Feuille1").Range("A4")
  End If
  Sheets("Feuille1").Select
End Sub

Merci, j'ai mis en colonne A, 1,2,3,3 et il colle la même chose, alors que je ne veux pas de deux 3.

Salut le forum

Ta question se résume à ne pas copier les doublons !

Pour lancer le débat

Sub CopierSansDoublons()
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("a2", [a65000].End(xlUp))
   mondico(c.Value) = c.Value
Next c
[c2].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
End Sub

Mytå

Oui défaut, d'expression écrite.

Re le forum

Essaye le code suivant, on adaptera pour la suite

Ici 1, 3, 2, 3 va te retourner 1, 3, 2

Sub CopierSansDoublon()
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("a2", [a65000].End(xlUp))
   mondico(c.Value) = c.Value
Next c
[c2].Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
End Sub

Mytå

Celui là, à l'air de fonctionner.

Sub CopierSansDoublon()
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("a1:A25", [a65000].End(xlUp))
   mondico(c.Value) = c.Value
Next c
Sheets("Feuil1").Range("A4:A25").Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
End Sub

Re le forum

Macro légérement modifiée

Sub CopierSansDoublon()
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Sheets("Feuil2").Range("A1:A25")
   mondico(c.Value) = c.Value
Next c
Sheets("Feuil1").Range("A4").Resize(mondico.Count, 1) = Application.Transpose(mondico.keys)
End Sub

Mytå

Que veux dire le c ?

-- Lun Juin 13, 2011 4:17 pm --

Sur ma macro j'ai mis object, et ça fonctionne. Merci à vous deux.

Re le forum

Tu peux utiliser Range

Dim mondico As Object
Dim c As Range

Mytå

Merci


Je reviens la dessus pour modifier mon fichier.

7classeur2.zip (16.61 Ko)
Rechercher des sujets similaires à "copier condition"