[Résolu] Transfert partiel de données entre tableaux selon des références.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Franckxxx

XLDnaute Junior
Bonjour à tous!

J'essaye de faire une mise à jour partielle d'un tableau (Feuil1) de données à partir d'un autre tableau(Feuil2).
J'illustre par un exemple , dans le fichier joint, les principaux cas particuliers de mon problème. Le tableau réel fait 61 colonnes et possède beaucoup de lignes (>1000) dont le nombre varie car des lignes sont ajoutées régulièrement.

Concrètement, je tente de faire un comparaison entre les Ref (Feuil1, colonne K et Feuil2, colonne B), lorsque les Ref sont identique alors le Pu de la Feuil2 vient écraser le Pu de la Feuil1 associé et le Pe est copié/collé.

Étant débutant en VBA, mes tentatives ont été vaines malgré la recherche de d'exemples proches sur ce forum.
Toute aide, même partielle serais très appréciée.
Merci à vous! 🙂
 

Pièces jointes

Dernière édition:
Re : Transfert partiel de données entre tableaux selon des références.

Quelqu'un connaitrais-t-il un problème similaire duquel je pourrais m'inspirer pour me débloquer?
Je cherche à résoudre ce problème à l'aide de deux boucles composées en For mais je n'obtiens pas de résultat convaincant pour le moment.

Merci à vous,
 
Re : Transfert partiel de données entre tableaux selon des références.

Bonjour

un code à tester

Code:
Sub MisAJour()
 Dim DerLig1 As Long, DerLig2 As Long, i As Long, j As Long, TabIni, TabRef

 DerLig1 = Worksheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
 DerLig2 = Worksheets("Feuil2").Range("B" & Rows.Count).End(xlUp).Row
 TabIni = Worksheets("Feuil1").Range("A2:N" & DerLig1)
 TabRef = Worksheets("Feuil2").Range("B4:D" & DerLig2)

 For i = LBound(TabRef) To UBound(TabRef)
    For j = LBound(TabIni) To UBound(TabIni)
        If TabRef(i, 1) = TabIni(j, 11) Then
            TabIni(j, 13) = TabRef(i, 2)
            TabIni(j, 14) = TabRef(i, 3)
            Exit For
        End If
    Next
 Next

 Worksheets("Feuil1").Range("A2").Resize(UBound(TabIni, 1), UBound(TabIni, 2)) = TabIni
    
End Sub

A+
 
Re : Transfert partiel de données entre tableaux selon des références.

Bonjour Paf,

Le code ressemble effectivement à celui que vous m'aviez fournis dans une autre discussion. J'avais repris cette idée mais avais fait quelques erreurs qui empêchaient mon code de fonctionner.
Je vais essayer de l'adapter à mon fichier originel.

Par contre je ne comprend pas très bien cette partie de code:
(UBound(TabIni, 1), UBound(TabIni, 2))
dans cette ligne de code:
Worksheets("Feuil1").Range("A2").Resize(UBound(TabIni, 1), UBound(TabIni, 2)) = TabIni
Pourriez vous m'éclairer sur sa fonction?

Merci à vous! 🙂
 
Re : [Résolu] Transfert partiel de données entre tableaux selon des références.

Re,

TabIni est un tableau à 2 dimensions contenant la plage A2:N dernière ligne (l'ensemble des données sans la ligne de titre)

après mise à jour des éléments, on va recopier ce tableau dans la feuille (les données existantes vont être "écrasée")

Mais pour le copier il faut définir la taille de l'emplacement
c'est le but de resize auquel il faut spécifier le nombre de ligne et le nombre de colonne

ubound(tabini,1) donne le nombre d'élément de la première dimension (ce sera le nombre de lignes)
ubound(tabini,2) donne le nombre d'élément de la deuxième dimension (ce sera le nombre de colonnes)

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour