Entete de matrice qui est effacée

David -  
 David -

Bonjour,

J'ai créé le code suivant pour comparer deux tableaux et ajouter des informations du 2ème tableau dans le 1er sous certaines conditions.

Je souhaite par la suite remplacées les données chargées du tableau dans la feuille de calcul, mais les entêtes n'apparaissent pas. est ce que vous pouvez m'aider ?

Merci
 

Option Base 1
Sub Test()
Dim Tab1(),Tab 2()

Redim Tab1(DerL1,6)
Redim Tab2(DerL2,6)


For I= 2 to DerL1
Tab1(I,1)=Ws1.range("A" & I)
Tab1(I,2)=Ws1.range("B" & I)
Tab1(I,3)=Ws1.range("C" & I)
Tab1(I,4)=Ws1.range("D" & I)
Tab1(I,5)=Ws1.range("E" & I)
Tab1(I,6)=Ws1.range("F" & I)
Next I

For J= 2 to DerL2
Tab2(J,1)=Ws2.range("A" & J)
Tab2(J,2)=Ws2.range("B" & J)
Tab2(J,3)=Ws2.range("C" & J)
Tab2(J,4)=Ws2.range("D" & J)
Tab2(J,5)=Ws2.range("E" & J)
Tab2(J,6)=Ws2.range("F" & J)
Next J

For I = LBound(Tab1) To UBound(Tab1)
   For J = LBound(Tab2) To UBound(Tab2)
       If Tab1(I,1= Tab2(J,4) Then Tab1(I,5)=Tab2(J,1)
       If Tab1(I,1= Tab2(J,4) Then Tab1(I,6)=Tab2(J,6)
   Next J
Next I


Ws1.Cells(1,1).Resize(UBound(Tab1,1),UBound(Tab1,2))= Tab1


End Sub


Windows / Firefox 111.0

6 réponses

f894009 Messages postés 17277 Date d'inscription   Statut Membre Dernière intervention   1 713
 

Bonjour,

Ou est defini DerL1 & 2?

Redim Tab1(DerL1,6)
Redim Tab2(DerL2,6)

Pouvez mettre un fichier exemple a dispo

Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : http://cjoint.com
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
 

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

peux-tu partager un fichier exemple, et décrire en quoi le résultat obtenu diffère du résultat attendu?

0
David
 

Bonjour,

Je vous joins le fichier ci joint, si vous déroulez le code, les entêtes du tableau de la feuille Ws1 ont disparu.

Est ce que vous pouvez me dire a quoi cela est du ?

j'aimerais savoir aussi si il est possible de supprimer les données d'un tableau en fonction d'une données (Ex : Supprimer lieu "Paris") et mettre a jour la feuille Ws1 en conséquence ?

Merci par avance pour votre aide,

https://www.cjoint.com/c/MCAnUTHj3hX

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

Quand j'exécute le code, le contenu de la première ligne de Ws1 ne disparait pas.

0
David
 

Bonjour,

Oui effectivement, en enregistrant la 1ere ligne comme une ligne du tableau cela fonctionne,

je souhaiterais supprimer les lignes du tableau dont le lieu est "Paris".

En passant par la matrice du tableau, puis appliquer les changements dans la feuille excel,

Est ce que vous pouvez me dire comment procéder ?

Merci par avance,

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

Pourquoi passer par ces matrices, qui te compliquent la vie?

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

Le code me semble bizarrement compliqué.  Ceci ne fonctionne-t-il pas tout aussi bien?

Option Explicit
Sub Testy()

Dim WB As Workbook, Ws1 As Worksheet, Ws2 As Worksheet
Dim DerL1 As Long, DerL2 As Long, I As Long, J As Long

Set WB = ThisWorkbook
Set Ws1 = WB.Sheets("Ws1")
Set Ws2 = WB.Sheets("Ws2")
DerL1 = Ws1.Range("A" & Rows.Count).End(xlUp).Row
DerL2 = Ws2.Range("A" & Rows.Count).End(xlUp).Row
For I = 2 To DerL1
    For J = 2 To DerL2
        If Ws1.Cells(I, 1) = Ws2.Cells(J, 4) Then
            Ws1.Cells(I, 5) = Ws2.Cells(J, 1)
            Ws1.Cells(I, 6) = Ws2.Cells(J, 6)
        End If
    Next J
Next I
End Sub
0
David
 

Bonjour,

Oui le code que tu proposes est plus simple, je souhaiterais utiliser les tableaux car le fichier fait plusieurs centaines de milliers de lignes. Et je souhaite être plus à l'aise dans leur utilisation.. 

0