VBA Copier_coller cellule sur 2 tableaux differents et avec donnees identiques

MarieL91

XLDnaute Nouveau
Bonjour à tous!

Je suis face à un problème sur excel ....
Je recherche à copier- coller des cellules chaque jours en fonction de 2 tableaux sur 2 onglets differents.
J'ai essayé des formules telles que RECHERCHV ou INDEX EQUIV mais le problème j'ai plusieurs valeurs identiques.
Je me permet de vous joindre un fichier avec les explications.

J’espère que quelqu'un pourra m'aider!

Je vous remercie d'avance!

Bonne journée:)
 

Fichiers joints

CPk

XLDnaute Impliqué
Re : VBA Copier_coller cellule sur 2 tableaux differents et avec donnees identiques

Bonjour MArieL91, vous voulez une solution avec VBA ou par Formule ?
 

Lone-wolf

XLDnaute Barbatruc
Re : VBA Copier_coller cellule sur 2 tableaux differents et avec donnees identiques

Bonjour Marie, CPk :)

Si c'est par VBA, ne pas oublier d'enlever le mot de passe ;)
 

MarieL91

XLDnaute Nouveau
Re : VBA Copier_coller cellule sur 2 tableaux differents et avec donnees identiques

Bonjour CPK et Lone-wolf,

Merci de repondre aussi vite!

Oui desolee j'ai enleve la protection.

Formule ou VBA je n'ai pas de preference toutefois ce tableau va me servir en TCD.

Ci joint le fichier debloqué.

Merci

Bonne journee
 

Fichiers joints

Lone-wolf

XLDnaute Barbatruc
Re : VBA Copier_coller cellule sur 2 tableaux differents et avec donnees identiques

Bonjour Marie

Dans ce cas, je laisse la parole aux experts. Je n'ai aucune notions concernant les TCD.
 

MarieL91

XLDnaute Nouveau
Re : VBA Copier_coller cellule sur 2 tableaux differents et avec donnees identiques

Bonjour ,
Non je me suis mal exprimée .
Pour la récupération de donnees c'est bien avec vba ou formule .
Apres je m'occuperais du tcd avec le nouveau tableau !=)
 

Lone-wolf

XLDnaute Barbatruc
Re : VBA Copier_coller cellule sur 2 tableaux differents et avec donnees identiques

Hello

Est-que c'est toi qui mets les lignes en rouge pour les copier, ou comment ça se passe?

Comme il s'agit d'une gestion des doublons et je pense que les experts vont le faire par tableau VBA, personnellement je ne peux rien faire non plus désolé.
 
Dernière édition:

klin89

XLDnaute Impliqué
Re : VBA Copier_coller cellule sur 2 tableaux differents et avec donnees identiques

Bonjour à tous, :)

Avec un dictionnaire, c'est assez simple à réaliser.

Tu parcours chaque ligne de ta 1ère feuille avec la méthode exists (If Not .exists) pour déterminer les clés de ton dictionnaire (concaténation de A&B&C&D) auxquelles tu associeras un tableau de 4 valeurs (D, I,J et K) comme item.
A nouveau, tu boucles sur la 2ème feuille pour opérer un alignement avec les clés trouvées toujours avec la méthode exists (If .exists)
Tu affectes ainsi les 4 éléments au regard des clés trouvées.
Je n'ai pas vraiment le temps en ce moment :p

klin89
 

klin89

XLDnaute Impliqué
Re : VBA Copier_coller cellule sur 2 tableaux differents et avec donnees identiques

Re MarieL91

Essaie ceci :
Attention à la position de tes feuilles dans ton classeur.
Efface tes annotations à cause de CurrentRegion.
VB:
Option Explicit
Sub test()
Dim a, i As Long, j As Long, w(), txt As String
    With Sheets(1).Range("a10").CurrentRegion
        a = Application.Index(.Value, Evaluate("row(1:" & _
                       .Rows.Count & ")"), Array(1, 2, 3, 4, 8, 12, 13, 14))
    End With
    With CreateObject("Scripting.Dictionary")
        For i = 2 To UBound(a, 1)
            txt = Join(Array(a(i, 1), a(i, 2), a(i, 3), a(i, 4)), Chr(2))
            If Not .exists(txt) Then
                .Item(txt) = VBA.Array(a(i, 5), a(i, 6), a(i, 7), a(i, 8))
            End If
        Next
        With Sheets(2).Range("a4").CurrentRegion
            With .Offset(1, 4).Resize(.Rows.Count - 1, .Columns.Count - 4)
                .ClearContents
            End With
            a = .Value
        End With
        For i = 2 To UBound(a, 1)
            txt = Join(Array(a(i, 1), a(i, 2), a(i, 3), a(i, 4)), Chr(2))
            If .exists(txt) Then
                w = .Item(txt)
                For j = 5 To UBound(a, 2)
                    a(i, j) = w(j - 5)
                Next
            End If
        Next
    End With
    Sheets(2).Range("a4").Resize(UBound(a, 1), UBound(a, 2)).Value = a
End Sub
Dans la dernière boucle, on fera l'économie de la variable w :p
VB:
For i = 2 To UBound(a, 1)
    txt = Join(Array(a(i, 1), a(i, 2), a(i, 3), a(i, 4)), Chr(2))
    If .exists(txt) Then
        For j = 5 To UBound(a, 2)
            a(i, j) = .Item(txt)(j - 5)
        Next
    End If
Next
klin89
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : VBA Copier_coller cellule sur 2 tableaux differents et avec donnees identiques

Bonsoir klin,

je te fais un klin d'oeil ;) . Et je ne me suis pas trompé concernant les tableaux :p :D
 

CPk

XLDnaute Impliqué
Re : VBA Copier_coller cellule sur 2 tableaux differents et avec donnees identiques

Bonjour à toutes et à tous, il y a le filtre avancé aussi qui peut officier comme solution.
 

MarieL91

XLDnaute Nouveau
Re : VBA Copier_coller cellule sur 2 tableaux differents et avec donnees identiques

Bonjour Klin, Lonewolf et Cpk,

Déjà merci a tous d'avoir pris le temps de m'aider!

Désolée pour le retard problème technique je ne voyais pas que vous aviez répondu à la discussion.

Cependant , j'ai essayé de comprendre et d'utiliser le code VBA de Klin mais il ne fonctionne pas. J'ai bien compris le début de macro et réalisé des recherches sur comment créer " un dictionnaire sur VBA" mais sans résultat....

Ci dessous le codage qui bloque :
With .Offset(1, 4).Resize(.Rows.Count - 1, .Columns.Count - 4)
.ClearContents

J’espère que vous pourrez m'aider un peu encore !

Bonne journée

Merci
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas