Copier les valeurs d'un tableau déjà existant avec condition

Re,

Concerant les doublons ... existe -t-il dans le fichier Jour ... un champ qui contient un identifiant unique ... ???

Oui la colonne E.

JdViRuS a écrit :

Oui la colonne E.

Re,

Si je ne trompe pas ... la Colonne E est un intitulé ... donc il s'agit de texte libre ... qui ne peut pas servir d'identifiant unique ....

De préférence ... un identifiant unique devrait être un nombre unique ... à réfléchir ...

Sans identifiant unique ... qu'il faut peut-être créer ... aucun moyen de gérer les fameux doublons ...

N° NB en colonne C dans ce cas. Dans cette colonne il y aura des numéro à 5 chiffres.

JdViRuS a écrit :

N° NB en colonne C dans ce cas. Dans cette colonne il y aura des numéro à 5 chiffres.

Des numéros à cinq chiffres ... OK ... mais on est d'accord ... jamais deux fois le même numéro ...???

Non, jamais.

JdViRuS a écrit :

Non, jamais.

Bonjour,

Puisque c'est le cas ... il existe un identifiant unique en Colonne C ... qui peut servir à ne pas copier deux fois le même record ...

Il suffit donc d'ajouter une petite modification dans la macro ...

Bonjour, oui c'est ça. Ce code

Public Flag As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
If Flag Then Exit Sub
    If Not Application.Intersect(Target, Columns("c")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        If Application.CountIf(Range("c:c"), Target) > 1 Then
            Flag = True
                MsgBox ("Ce numéro existe déjà !")
                Target.ClearContents
            Flag = False
         End If
    End If
End Sub

fonctionne pour la saisie de doublon mais pas pour le copier coller; ce que fait la macro justement.

Bonjour,

J'ai bien peur ... que tu confondes beaucoup de choses ... !!!

Sans doute que tu as trop d'enthousiasme ...

La macro évènementielle que tu viens de poster ne sert qu'à une seule chose :

Eviter de saisir Manuellement des doublons ...

Or ... ce n'est pas du tout ton cas ... !!!

Dans ton cas, la vérification ( doublon pas doublon ) doit être intégrée dans la macro qui effectue la copie ...

J'espère que cette explication est assez claire ...

Non, tu n'a pas compris ce que j'ai écris.

J'ai dit que le code que j'utilise en générale pour éviter les doublons, ne peux pas fonctionner.

Je ne confond pas, j'explique mon problème simplement.

J'ai dit :

ce code fonctionne pour la saisie de doublon mais pas pour le copier coller; ce que fait la macro justement.

Donc oui j'ai bien compris, juste que pour le moment je pêche à trouver comment interdire le copier coller si doublon.

Re,

Ci-joint la Version 2 de ta macro ...

Option Explicit

Sub CopieDonnéesJour2()
' Copie des Données du Fichier Jour au Fichier Récap 'SANS' les Doublons '''''''''''''''''''''''''''''''''''''''''''''''
' Déclaration des quatre variables
Dim wkb1 As Workbook
Dim wkb2 As Workbook
Dim der1 As Long
Dim der2 As Long
Dim c As Range

' Stopper rafraichissement de l'écran
   Application.ScreenUpdating = False
' Définir le fichier 1 - Jour
   Set wkb1 = ActiveWorkbook
' Définir la dernière ligne du fichier 1 -Jour
   der1 = ActiveSheet.Cells(Application.Rows.Count, "B").End(xlUp).Row
' Si la dernière ligne = 2 sortir de la macro
   If der1 = 2 Then Exit Sub
' Ouvrir le fichier Récap siuté dans le même sous-répertoire que le fichier Jour
   Workbooks.Open Filename:=wkb1.Path & "\PF RECAP.xlsm"
'Définir le fichier 2 - Récap
   Set wkb2 = ActiveWorkbook
' Activer le fichier 2
   wkb1.Activate
' Faire les copies des données
    For Each c In wkb1.Sheets(1).Range("C3:C" & der1)
       If IsError(Application.Match(c, wkb2.Sheets(1).Range("C3:C" & der2), 0)) Then
           'Définir la dernière ligne du fichier 2 - Récap
           der2 = ActiveSheet.Cells(Application.Rows.Count, "B").End(xlUp).Row + 1
           ' Copie record
           wkb2.Sheets(1).Range("B" & der2 & ":H" & der2).Value = wkb1.Sheets(1).Range("B" & c.Row & ":H" & c.Row).Value
       End If
    Next c
 ' Activer le fichier 2
   wkb2.Activate
' Sauver et Fermer le fichier 2
   wkb2.Close savechanges:=True
' Ré-Autoriser le rafraichissement de l'écran
  Application.ScreenUpdating = True
End Sub

En espèrant que cela t'aide ...

Merci

J'ai une erreur.

25 10
JdViRuS a écrit :

Merci

J'ai une erreur.

Re,

Si tu as une erreur ... il faut vérifier les deux fichiers pour faire des tests ...

Donc ... si tu n'arrives pas à résoudre le problème tout seul, il faut joindre tes deux fichiers ...

OK, les voilà. Merci

6jour.xlsm (24.77 Ko)
7pf-recap.xlsm (18.02 Ko)

Re,

Merci ...

Dès que j'ai un moment .. je regarde tes deux fichiers ...

Ok merci !

Re,

Ci-joint la Version 2 de ton fichier Jour ...

En espèrant que cela t'aide ...

16jour-v2.xlsm (23.66 Ko)

D'ici chez moi ça fonctionne, à tester demain mais c'est plutôt bon signe !

Merci pour le temps accordé.

JdViRuS a écrit :

D'ici chez moi ça fonctionne, à tester demain mais c'est plutôt bon signe !

Merci pour le temps accordé.

Content de savoir que la macro fonctionne comme tu le souhaitais ...

Merci ... pour tes remerciements ...

L'important c'est d'en apprendre à chaque fois grace a la communauté de ce forum. Merci !

Rechercher des sujets similaires à "copier valeurs tableau deja existant condition"