Excel: Transposer une Matrice sous forme de liste
Résolu
Hekiz
Messages postés
15
Statut
Membre
-
Hekiz Messages postés 15 Statut Membre -
Hekiz Messages postés 15 Statut Membre -
Bonjour à tous,
J ai un petit bug dans le programme à résoudre.
Une des personne du forum (Pingou) m'a beaucoup aidé à monté ma matrix. Merci Pingou.
Cependant j'ai un petit bug qui subsiste.
- Quand je remplis ma matrice de dépendance, j ai une liste (dans un autre onglet) qui s'incrémente automatiquement en venant chercher les l'informations associées.
- Dans la liste qui est sous forme de tableau il reste des colonne que je peux remplir manuellement.
Problème:
Apres avoir remplis les colonne H and up de la liste, je retourne dans la matrice pour remplir d'autres champs.
et quand je reviens sur la liste, tous les commentaires de la colonne H and up ont disparues.

Voici le code:
Option Explicit
Sub TransListe()
Dim shm As Object, tb As Object
Dim deco As Long, deli As Long, n As Long, nbc As Long
Dim li As Integer, lli As Integer, lit As Integer, dr As Integer
Dim liste() '1 To 10, 1 To 6)
li = 4: lli = 1
Set shm = Sheets("Dependency Matrix")
deli = shm.Cells(Rows.Count, 2).End(xlUp).Row
deco = shm.Cells(2, Columns.Count).End(xlToLeft).Column
nbc = Application.CountA(shm.Range(shm.Cells(li, 4), shm.Cells(deli, deco)))
ReDim liste(1 To nbc, 1 To 6)
With shm
Do While .Cells(li, 2) <> ""
n = Application.CountA(.Range(.Cells(li, 4), .Cells(li, deco)))
If n <> 0 Then
For dr = 4 To deco
If .Cells(li, dr) <> "" Then
liste(lli, 1) = "DS" & Format(lli, "000")
liste(lli, 2) = .Cells(li, 2)
liste(lli, 3) = .Cells(li, 3)
liste(lli, 4) = .Cells(li, dr)
liste(lli, 5) = .Cells(3, dr)
liste(lli, 6) = .Cells(2, dr)
lli = lli + 1
End If
Next dr
End If
li = li + 1
Loop
End With
Set tb = Range("Tableau3")
If tb.Item(1, 1) <> "" Then tb.Delete
lit = tb.Row
Sheets("Dependency Liste").Cells(lit, 2).Resize(UBound(liste, 1), UBound(liste, 2)).Value = liste
Set shm = Nothing
Set tb = Nothing
End Sub
Merci de votre aide
Hekiz
J ai un petit bug dans le programme à résoudre.
Une des personne du forum (Pingou) m'a beaucoup aidé à monté ma matrix. Merci Pingou.
Cependant j'ai un petit bug qui subsiste.
- Quand je remplis ma matrice de dépendance, j ai une liste (dans un autre onglet) qui s'incrémente automatiquement en venant chercher les l'informations associées.
- Dans la liste qui est sous forme de tableau il reste des colonne que je peux remplir manuellement.
Problème:
Apres avoir remplis les colonne H and up de la liste, je retourne dans la matrice pour remplir d'autres champs.
et quand je reviens sur la liste, tous les commentaires de la colonne H and up ont disparues.

Voici le code:
Option Explicit
Sub TransListe()
Dim shm As Object, tb As Object
Dim deco As Long, deli As Long, n As Long, nbc As Long
Dim li As Integer, lli As Integer, lit As Integer, dr As Integer
Dim liste() '1 To 10, 1 To 6)
li = 4: lli = 1
Set shm = Sheets("Dependency Matrix")
deli = shm.Cells(Rows.Count, 2).End(xlUp).Row
deco = shm.Cells(2, Columns.Count).End(xlToLeft).Column
nbc = Application.CountA(shm.Range(shm.Cells(li, 4), shm.Cells(deli, deco)))
ReDim liste(1 To nbc, 1 To 6)
With shm
Do While .Cells(li, 2) <> ""
n = Application.CountA(.Range(.Cells(li, 4), .Cells(li, deco)))
If n <> 0 Then
For dr = 4 To deco
If .Cells(li, dr) <> "" Then
liste(lli, 1) = "DS" & Format(lli, "000")
liste(lli, 2) = .Cells(li, 2)
liste(lli, 3) = .Cells(li, 3)
liste(lli, 4) = .Cells(li, dr)
liste(lli, 5) = .Cells(3, dr)
liste(lli, 6) = .Cells(2, dr)
lli = lli + 1
End If
Next dr
End If
li = li + 1
Loop
End With
Set tb = Range("Tableau3")
If tb.Item(1, 1) <> "" Then tb.Delete
lit = tb.Row
Sheets("Dependency Liste").Cells(lit, 2).Resize(UBound(liste, 1), UBound(liste, 2)).Value = liste
Set shm = Nothing
Set tb = Nothing
End Sub
Merci de votre aide
Hekiz
A voir également:
- Excel: Transposer une Matrice sous forme de liste
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel trier par ordre croissant chiffre - Guide
8 réponses
Bonjour
En attendant (décidément) le retour de Le Pingou, to pb vient d'ici
Set tb = Range("Tableau3")
If tb.Item(1, 1) <> "" Then tb.Delete
Tableau3 devrait se limiter aux colonnes A:G sinon ....
Dans une version précédente le nettoyage était assuré par la ligne
Sheets("Dependency Liste").Range("B3:G1000").ClearContents
Cdlmnt et salutations à l'ami Le Pingou
En attendant (décidément) le retour de Le Pingou, to pb vient d'ici
Set tb = Range("Tableau3")
If tb.Item(1, 1) <> "" Then tb.Delete
Tableau3 devrait se limiter aux colonnes A:G sinon ....
Dans une version précédente le nettoyage était assuré par la ligne
Sheets("Dependency Liste").Range("B3:G1000").ClearContents
Cdlmnt et salutations à l'ami Le Pingou
Bonjour ccm81, Hekiz,
Eh bien oui, je n'ai pas pris en compte l'ajout de données manuelles sur la liste.
Je pense à une autre procédure pour en tenir compte du tableau structuré qui s'allonge de 5 colonnes.
Pour le nettoyage, une fois pour plage de données et l'autre pour le tableau structuré avec lequel le demandeur désire poursuivre
Hekiz voir mp.
Eh bien oui, je n'ai pas pris en compte l'ajout de données manuelles sur la liste.
Je pense à une autre procédure pour en tenir compte du tableau structuré qui s'allonge de 5 colonnes.
Pour le nettoyage, une fois pour plage de données et l'autre pour le tableau structuré avec lequel le demandeur désire poursuivre
Hekiz voir mp.
Bonjour Hekiz,
Je vous laisse essayer cette version, merci du retour pour que je finalise la procédure.
Le fichier : https://www.cjoint.com/c/KLdhYWaMZzn
Je vous laisse essayer cette version, merci du retour pour que je finalise la procédure.
Le fichier : https://www.cjoint.com/c/KLdhYWaMZzn
WOW c'est impressionnant !!!
:) :) :)
Merci pour votre aide.
Ca m'a l'aire de très bien fonctionner.
Merci à vous.
Hekiz
:) :) :)
Merci pour votre aide.
Ca m'a l'aire de très bien fonctionner.
Merci à vous.
Hekiz
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci, content pour vous.
Je laisse la version tel quel, vous revenez si problème.
Note: la feuille [Feuil1] peut être supprimée, elle ma servie pour trouver une procédure correcte.
Je laisse la version tel quel, vous revenez si problème.
Note: la feuille [Feuil1] peut être supprimée, elle ma servie pour trouver une procédure correcte.
Bonjour Pingou,
J'utilise la Matrice de dépendance depuis quelque semaines déjà, et ca va très bien.
la semaine dernière, j'ai eu un bug dans le code mais je n'arrive pas à le corriger malgré les multiple tentatives.
quand j'inscris quelque chose dans la sheet "dependancy liste" dans la colonne description et si apres le vais modifier la sheet " dependancy matrix".
quand je reviens dans la sheet "dependancy liste" j ai une erreur du codage qui pop up.
ca fonctionnait très bien avant.
https://www.cjoint.com/c/KLxfpCaeXdb
Je joint le fichier car l erreur change des fois.
Merci
J'utilise la Matrice de dépendance depuis quelque semaines déjà, et ca va très bien.
la semaine dernière, j'ai eu un bug dans le code mais je n'arrive pas à le corriger malgré les multiple tentatives.
quand j'inscris quelque chose dans la sheet "dependancy liste" dans la colonne description et si apres le vais modifier la sheet " dependancy matrix".
quand je reviens dans la sheet "dependancy liste" j ai une erreur du codage qui pop up.
ca fonctionnait très bien avant.
https://www.cjoint.com/c/KLxfpCaeXdb
Je joint le fichier car l erreur change des fois.
Merci
Bonjour,
La seul erreur que j'ai trouvé est [Erreur de compilation] , je l'ai corrigé, il semble que c'est OK.
Pour la prochaine, pensez de mettre le code d'erreur et la description sommaire. se sera plus simple pour moi....Merci.
Le fichier: https://www.cjoint.com/c/KLxn2K7xqLn
La seul erreur que j'ai trouvé est [Erreur de compilation] , je l'ai corrigé, il semble que c'est OK.
Pour la prochaine, pensez de mettre le code d'erreur et la description sommaire. se sera plus simple pour moi....Merci.
Le fichier: https://www.cjoint.com/c/KLxn2K7xqLn
Merci de votre réponse rapide.
J ai identifié le problème qui subsiste.
Si dans la sheet "dependancy liste" j'applique un filtre (voir picture)
et que dans la sheet " dependancy matrix" je met de la data pour un groupe autre que celui filtré dans la sheet "dependancy liste".
Ca me bug la sheet "dependancy liste" et ca m'efface tout le groupe sur lequel j'ai appliqué la nouvelle data.
Un peu confus ce que je dis donc j ai fait un Screenshot

Merci
Hekiz
J ai identifié le problème qui subsiste.
Si dans la sheet "dependancy liste" j'applique un filtre (voir picture)
et que dans la sheet " dependancy matrix" je met de la data pour un groupe autre que celui filtré dans la sheet "dependancy liste".
Ca me bug la sheet "dependancy liste" et ca m'efface tout le groupe sur lequel j'ai appliqué la nouvelle data.
Un peu confus ce que je dis donc j ai fait un Screenshot

Merci
Hekiz
Bonjour,
Petite correction dans le code à cause du message d'alerte, c'est ok.
Filtre sur [Structure] et 4 ajouts pour [Drivetrain] dans [dependancy matrix] tout ok

Le fichier: https://www.cjoint.com/c/KLykQChY3an
Joyeux Noël
Petite correction dans le code à cause du message d'alerte, c'est ok.
Filtre sur [Structure] et 4 ajouts pour [Drivetrain] dans [dependancy matrix] tout ok
Le fichier: https://www.cjoint.com/c/KLykQChY3an
Joyeux Noël
j ai essayé
Set tb = Range("Tableau3")
If tb.Item(1, 1) <> "" Then Range("B3:G1000").ClearContents
ca n efface plus les commentaires mais les commentaire ne suivent pas les lignes qui s incrémentent.
Exemple:
A la ligne DS001 j'écrie "comment 1" a la colonne H
mais si dans la matrice j'enlevé la donné que j'ai inscrit associer a DS001, le commentaire reste et se met automatiquement sur les donner qui était sur DS002 mais maintenant qui est passé à DS001
Ca me fait mal au crane, lol
merci en tout cas pour le support
Hekiz
J'ai mentionné dans le poste 2 qu'il faut une autre procédure , alors c'est clair que ce que vous avez essayé ne donne aucun résultat.
Salutations.
Le Pingou