XL 2010 Reconstruire un tableau

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 !

cathodique

XLDnaute Barbatruc
Bonjour,

Dans le fichier joint feuille bd, la copie d'un tableau structuré de mon fichier de travail alimenté via un formulaire.
en colonne G et H donnée obtenu avec un saut de ligne (le caractère utilisé dans le code de transfert est Chr(10)).
Je voudrai obtenir le tableau de la feuille résultat. La consultation du fichier sera plus explicite.
tableau départ
1713418917787.png


tableau résultat
1713418965355.png


En vous remerciant.
 

Pièces jointes

Dernière édition:
Solution
J'attends de voir comment sylvanu va traiter votre sujet
😅 C'est de l'abus ou un challenge ? 😅

Un essai en PJ avec :
VB:
Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim T, Tsortie, TabloTransfert, DL%, DLS%, N%, L%
TabloTransfert = Array(0, 8, 7, 1, 2, 3, 4, 5, 6, 9) ' Array de permutation de champs tableau de sortie vs tableau entrée.
ReDim Tsortie(1 To 10000, 1 To 9)                   ' Tableau de sortie, gde taille par défaut
T = [TbS]                                           ' Transfert tableau dans array
DLS = 0                                             ' Init N° ligne écriture dans array de sortie Tsortie
For DL = 1 To UBound(T)                             ' Pour toutes les lignes du tableau
    DLS = DLS...
Re,
de mon fichier de travail alimenté via un formulaire.

Mettre un fichier XLSM sans code ca le fait moyen. Pour moi, c'est dans le code du formulaire que les modifs sont a faire a supposer evedement qu'il y ait du code dans votre fichier "de travail"
 
Re,
de mon fichier de travail alimenté via un formulaire.

Mettre un fichier XLSM sans code ca le fait moyen. Pour moi, c'est dans le code du formulaire que les modifs sont a faire a supposer evedement qu'il y ait du code dans votre fichier "de travail"
Il me semble que ma demande ne concerne pas mon fichier de travail.
Je ne veux rien modifier à mon fichier de travail.
Je cherche à transformer le tableau extrait de mon fichier de travail pour l'exploiter dans un autre fichier.
Apparemment, tu n'as pas bien compris ma demande.
Maintenant, si tu es disposé à m'aider (vocation de ce forum), je t'en remercie.
Sinon, passe ton chemin car je n'ai ni le temps, ni l'envie de répondre à des messages qui n'apportent rien à cette discussion, ni au forum.

Bonne journée.
 
Il me semble que ma demande ne concerne pas mon fichier de travail.
Je ne veux rien modifier à mon fichier de travail.
Je cherche à transformer le tableau extrait de mon fichier de travail pour l'exploiter dans un autre fichier.
Apparemment, tu n'as pas bien compris ma demande.
Maintenant, si tu es disposé à m'aider (vocation de ce forum), je t'en remercie.
Sinon, passe ton chemin car je n'ai ni le temps, ni l'envie de répondre à des messages qui n'apportent rien à cette discussion, ni au forum.

Bonne journée.
Re,
J'attends de voir comment sylvanu va traiter votre sujet
 
J'attends de voir comment sylvanu va traiter votre sujet
😅 C'est de l'abus ou un challenge ? 😅

Un essai en PJ avec :
VB:
Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim T, Tsortie, TabloTransfert, DL%, DLS%, N%, L%
TabloTransfert = Array(0, 8, 7, 1, 2, 3, 4, 5, 6, 9) ' Array de permutation de champs tableau de sortie vs tableau entrée.
ReDim Tsortie(1 To 10000, 1 To 9)                   ' Tableau de sortie, gde taille par défaut
T = [TbS]                                           ' Transfert tableau dans array
DLS = 0                                             ' Init N° ligne écriture dans array de sortie Tsortie
For DL = 1 To UBound(T)                             ' Pour toutes les lignes du tableau
    DLS = DLS + 1                                   ' On incrémente la ligne d'écriture de Tsortie
    T(DL, 8) = T(DL, 8) & Chr(10)                   ' On ajoute un chr(10) à la fin, on en a donc toujours au moins 1
    T7chr10 = Split(T(DL, 7), Chr(10))              ' On sépare les champs de N° de dossier
    T8chr10 = Split(T(DL, 8), Chr(10))              ' On sépare les champs de ID
    For N = 0 To UBound(T8chr10) - 1                ' Pour tous les ID ( -1 ligne car la dernière est vide )
        For L = 1 To 9                              ' Transfert ligne avec permutation données
            Tsortie(DLS, L) = T(DL, TabloTransfert(L))
        Next L
        Tsortie(DLS, 1) = T8chr10(N)                ' Inscription ID
        Tsortie(DLS, 2) = T7chr10(N)                ' Inscription N° dossier
        DLS = DLS + 1                               ' Procheine ligne
    Next N
    DLS = DLS - 1                                   ' Quand on sort on supprime la ligne vide du dernier for
Next DL
[TbId].ListObject.DataBodyRange.Delete              ' On efface le tableau résultat
[TbId].Item(1, 1).Resize(DLS, UBound(Tsortie, 2)) = Tsortie  ' On écrit le tableau de sortie
End Sub
La macro est automatique quand on sélectionne la feuille "Résultat"
 

Pièces jointes

😅 C'est de l'abus ou un challenge ? 😅

Un essai en PJ avec :
VB:
Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim T, Tsortie, TabloTransfert, DL%, DLS%, N%, L%
TabloTransfert = Array(0, 8, 7, 1, 2, 3, 4, 5, 6, 9) ' Array de permutation de champs tableau de sortie vs tableau entrée.
ReDim Tsortie(1 To 10000, 1 To 9)                   ' Tableau de sortie, gde taille par défaut
T = [TbS]                                           ' Transfert tableau dans array
DLS = 0                                             ' Init N° ligne écriture dans array de sortie Tsortie
For DL = 1 To UBound(T)                             ' Pour toutes les lignes du tableau
    DLS = DLS + 1                                   ' On incrémente la ligne d'écriture de Tsortie
    T(DL, 8) = T(DL, 8) & Chr(10)                   ' On ajoute un chr(10) à la fin, on en a donc toujours au moins 1
    T7chr10 = Split(T(DL, 7), Chr(10))              ' On sépare les champs de N° de dossier
    T8chr10 = Split(T(DL, 8), Chr(10))              ' On sépare les champs de ID
    For N = 0 To UBound(T8chr10) - 1                ' Pour tous les ID ( -1 ligne car la dernière est vide )
        For L = 1 To 9                              ' Transfert ligne avec permutation données
            Tsortie(DLS, L) = T(DL, TabloTransfert(L))
        Next L
        Tsortie(DLS, 1) = T8chr10(N)                ' Inscription ID
        Tsortie(DLS, 2) = T7chr10(N)                ' Inscription N° dossier
        DLS = DLS + 1                               ' Procheine ligne
    Next N
    DLS = DLS - 1                                   ' Quand on sort on supprime la ligne vide du dernier for
Next DL
[TbId].ListObject.DataBodyRange.Delete              ' On efface le tableau résultat
[TbId].Item(1, 1).Resize(DLS, UBound(Tsortie, 2)) = Tsortie  ' On écrit le tableau de sortie
End Sub
La macro est automatique quand on sélectionne la feuille "Résultat"
Bonjour Sylvau,
Rien de tout cela 👽
Perso, le code doit s'ecrire dans le formulaire vu que c'est le traitement du formulaire qui ne correspond pas a l'attente de cette personne. Epithete qu'il n'y connait vraiment rien de ce qu'il y a dans son formulaire. Plutot irracible le gars, mais pas grave. Je lui souhaites bon vent quand meme
 
Perso, le code doit s'ecrire dans le formulaire vu que c'est le traitement du formulaire qui ne correspond pas a l'attente de cette personne. Epithete qu'il n'y connait vraiment rien de ce qu'il y a dans son formulaire. Plutot irracible le gars, mais pas grave. Je lui souhaites bon vent quand meme
Aigri dès le matin. Ce n'est pas bon pour la santé.
Lorsqu'on ne comprend pas la demande. Le plus sage est de s'abstenir.
En tout cas tu as le mérite de m'avoir convaincu de te mettre dans la liste des indésirables.
Je t'assure qu'ils sont très peu. Tu en fais partir dés cet instant.
 
😅 C'est de l'abus ou un challenge ? 😅

Un essai en PJ avec :
VB:
Sub Worksheet_Activate()
Application.ScreenUpdating = False
Dim T, Tsortie, TabloTransfert, DL%, DLS%, N%, L%
TabloTransfert = Array(0, 8, 7, 1, 2, 3, 4, 5, 6, 9) ' Array de permutation de champs tableau de sortie vs tableau entrée.
ReDim Tsortie(1 To 10000, 1 To 9)                   ' Tableau de sortie, gde taille par défaut
T = [TbS]                                           ' Transfert tableau dans array
DLS = 0                                             ' Init N° ligne écriture dans array de sortie Tsortie
For DL = 1 To UBound(T)                             ' Pour toutes les lignes du tableau
    DLS = DLS + 1                                   ' On incrémente la ligne d'écriture de Tsortie
    T(DL, 8) = T(DL, 8) & Chr(10)                   ' On ajoute un chr(10) à la fin, on en a donc toujours au moins 1
    T7chr10 = Split(T(DL, 7), Chr(10))              ' On sépare les champs de N° de dossier
    T8chr10 = Split(T(DL, 8), Chr(10))              ' On sépare les champs de ID
    For N = 0 To UBound(T8chr10) - 1                ' Pour tous les ID ( -1 ligne car la dernière est vide )
        For L = 1 To 9                              ' Transfert ligne avec permutation données
            Tsortie(DLS, L) = T(DL, TabloTransfert(L))
        Next L
        Tsortie(DLS, 1) = T8chr10(N)                ' Inscription ID
        Tsortie(DLS, 2) = T7chr10(N)                ' Inscription N° dossier
        DLS = DLS + 1                               ' Procheine ligne
    Next N
    DLS = DLS - 1                                   ' Quand on sort on supprime la ligne vide du dernier for
Next DL
[TbId].ListObject.DataBodyRange.Delete              ' On efface le tableau résultat
[TbId].Item(1, 1).Resize(DLS, UBound(Tsortie, 2)) = Tsortie  ' On écrit le tableau de sortie
End Sub
La macro est automatique quand on sélectionne la feuille "Résultat"
Rebonjour @sylvanu 👏 👏 👏 👏 👏 👏 😎😎😎😎

Avant tout, mes excuses d'avoir répondu à @Oneida avant toi, il n'a pas compris ma demande.
Il a fini par toucher une corde sensible pour l'ignorer afin qu'il ne m'importune plus.

Je te remercie infiniment, c'est parfait. Je savais qu'il fallait utiliser la fonction Split.
Mais je n'ai pas su comment m'y prendre.
En fait, je n'aurai besoin que du tableau Tsortie à exploiter.

Tu me rends un grand service.
Encore merci.

Excellente journée.
 
il n'a pas compris ma demande.
Généralement quand un contributeur ne comprends pas la demande c'est que la demande est ambigüe, peu précise, trop vague.
Dans ce cas le contributeur comprends ou pas. Dans ce cas on fait un peu au pif ou on demande des précisions.
Mais inutile d'être agressif envers quelqu'un qui essaye de vous aider. 🙂
 
Généralement quand un contributeur ne comprends pas la demande c'est que la demande est ambigüe, peu précise, trop vague.
Dans ce cas le contributeur comprends ou pas. Dans ce cas on fait un peu au pif ou on demande des précisions.
Mais inutile d'être agressif envers quelqu'un qui essaye de vous aider. 🙂
J'ai fait un gros effort pour être le plus explicite possible.
Je lui ai répondu très poliment. lui expliquant qu'il s'agissait d'un tableau issu de mon fichier de travail.
Pour lui, il fallait intervenir au niveau de mon formulaire pour réorganiser mon tableau initial comme demander dans cette discussion.
Stp, relis le début de la discussion pour te rendre compte qu'il n'a pas essayé de m'aider mais plutôt autre chose...
Enfin, j'ai décidé de rejeter son aide à l'avenir.

Je te remercie infiniment.
 
- 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

Réponses
40
Affichages
2 K
Retour