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:)
 

Pièces jointes

  • recuperation donnees.xlsm
    39.4 KB · Affichages: 34
  • recuperation donnees.xlsm
    39.4 KB · Affichages: 42

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
 

Pièces jointes

  • recuperation donnees.xlsm
    39.4 KB · Affichages: 43
  • recuperation donnees.xlsm
    39.4 KB · Affichages: 46

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 Accro
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 Accro
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:

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
 

Discussions similaires

Statistiques des forums

Discussions
311 707
Messages
2 081 734
Membres
101 809
dernier inscrit
HADER2024