Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Reconstruire un tableau

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


tableau résultat


En vous remerciant.
 

Pièces jointes

  • Reconstruire tableau.xlsm
    26.8 KB · Affichages: 4
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...

Oneida

XLDnaute Impliqué
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"
 

cathodique

XLDnaute Barbatruc
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.
 

Oneida

XLDnaute Impliqué
Re,
J'attends de voir comment sylvanu va traiter votre sujet
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • Reconstruire tableau.xlsm
    20.7 KB · Affichages: 2

Oneida

XLDnaute Impliqué
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
 

cathodique

XLDnaute Barbatruc
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.
 

cathodique

XLDnaute Barbatruc
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.
 

cathodique

XLDnaute Barbatruc
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.
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…