tranposer un tableau vertical en deux autres avec raffraississement

Ayral10

XLDnaute Junior
Bonjour
Je recherche à transposer un tableau " tableau initial "qui a 3 colonnes , A, B et C
le cahier des charges :

la colonne C comporte des références du n°1 à 33 (exemple joint).Dans la réalité mon tableau comportera 5000 références environ.
la colonne A doit se transposer sur les mêmes références sur un autre tableau " NEUF "
(sur la ligne juste en-dessous des références : ligne 4,7,10,13,16. en face des compteurs en rouge.)
la colonne B doit se transposer sur les mêmes références sur un autre tableau "OBLITERE" (sur la ligne juste en-dessous des références : ligne 4,7,10,13,16 en face des compteurs en rouge.)

Le "tableau initial" sert de référence pour les autres et c'est lui seul auquel on rentre en brut des valeurs en colonne A et B,( qui comportera en réalité 5000 références les tableaux transposés doivent se mettre automatiquement à jour à chaque modif, si possible.)

les références sont parfois différentes d'un tableau à l'autre , et peuvent comporter des lettres comme par exemple" 29B" aussi elles doivent être prises en compte dans la mesure du possible, sinon , si c'est trop complexe, on prends que les références numériques.
il ne faut pas que les formats et bordures soient modifiées.Il y a déjà des mfc .

le 4e tableau " total" fera le total de chaque valeurs transposées, mais cela ne fait pas partie du sujet.

A noter que je débute en vba, je viens juste d'apprendre à placer les codes. je connais un peu les mfc, mais là aussi j'apprends a me servir de formules, aussi merci de votre indulgence !
merci de toute aide.
 

Pièces jointes

  • classeur démo transposition en 2 tableaux.xls
    26.5 KB · Affichages: 17
  • classeur démo transposition en 2 tableaux.xls
    26.5 KB · Affichages: 17
  • classeur démo transposition en 2 tableaux.xls
    26.5 KB · Affichages: 19
Dernière édition:

job75

XLDnaute Barbatruc
Re : tranposer un tableau vertical en deux autres avec raffraississement

Bonjour Ayral10,

Pas vu de tableau "Neufs transposés" ni de 4ème tableau " total".

Et le reste est du même acabit, résultat : je n'ai strictement rien compris.

A+
 

Ayral10

XLDnaute Junior
Re : tranposer un tableau vertical en deux autres avec raffraississement

oups , je me suis trompé de tableau, c'est modifié ! merci Job

a noter que la colonne A du tableau initial ne comporte qu'un seul "2" , dans la réalité il peut y avoir ou non des chiffres de 1 à 50.
Exemple le "2" en ligne 6 du tableau initial , dans la colonne A, correspondant au n° 5 ( référence ), il doit se retrouver transposé dans le tableau "NEUF" sous le "5" (en F4)

le 9" en C25 du tableau initial doit se retrouver transposé en I10 du tableau "OBLITERE"
 

Pièces jointes

  • classeur démo transposition en 2 tableaux.xls
    26.5 KB · Affichages: 21
  • classeur démo transposition en 2 tableaux.xls
    26.5 KB · Affichages: 24
  • classeur démo transposition en 2 tableaux.xls
    26.5 KB · Affichages: 24
Dernière édition:

Ayral10

XLDnaute Junior
Re : tranposer un tableau vertical en deux autres avec raffraississement

Bonjour tous le monde !
Je remonte mon post car je n'ai pas encore de solution à mon problème ni de réponse. Merci a tous ceux qui pourraient m'aider , j'en ai vraiment besoin.J'ai excel 2003 , mais j'ai aussi une version 2010 "starter" au cas où!
un grand merçi d'avance
 

job75

XLDnaute Barbatruc
Re : tranposer un tableau vertical en deux autres avec raffraississement

Bonjour Ayral10,

J'ai eu du mal à comprendre que ce n'est pas du tout une transposition que vous voulez.

Vous voulez juste remplir les tableaux que vous avez créés.

Alors voyez le fichier joint et ces macros :

1) dans le code de la feuille "NEUF" :

Code:
Private Sub Worksheet_Activate()
With Sheets("TABLEAU INITIAL")
  Copie .[C:C], .[A:A], [B3:J3,B6:C6,B9:L9,B12:G12,B15:L15]
End With
End Sub
2) dans le code de la feuille "OBLITERE" :

Code:
Private Sub Worksheet_Activate()
With Sheets("TABLEAU INITIAL")
  Copie .[C:C], .[B:B], [B3:J3,B6:C6,B9:L9,B12:G12,B15:L15]
End With
End Sub
3) dans Module1, macro paramétrée :

Code:
Sub Copie(ref As Range, source As Range, dest As Range)
Dim c As Range, lig As Variant
For Each c In dest
  lig = Application.Match(c, ref, 0)
  If IsNumeric(lig) Then c.Offset(1) = source(lig)
Next
End Sub
Les 2 feuilles se mettent à jour quand on les active.

A+
 

Pièces jointes

  • classeur démo transposition en 2 tableaux(1).xls
    59 KB · Affichages: 21
Dernière édition:

Ayral10

XLDnaute Junior
Re : tranposer un tableau vertical en deux autres avec raffraississement

Merci Job,
pour le mot "transposition" c'est un terme que j'ai noté dans un autre post, et pensé que c'était le terme ! bon encore une chose apprise !
Je vais donc utiliser tes codes , du moins j'espère qu'avec toutes les explications déjà données ,j'y arriverais, et les adapter avec les tableaux originels !
Pour le 14 A et 14A, je vais donc adapter mes références, sans espace d'ailleurs, car les références avec 3 ou 4 chiffres risquent de ne pas tenir dans mes cellules

Une question me préoccupe toutefois, dans les vba des fichiers oblitérés et neuf, les cellules concernées sont citées une à une pour mes exemples([B3:J3,B6:C6,B9:L9,B12:G12,B15:L15]) , pour adapter mes tableaux réels qui comportent des milliers de références, comment éviter de les rentrer une à une ?
@+merçi
 

job75

XLDnaute Barbatruc
Re : tranposer un tableau vertical en deux autres avec raffraississement

Re,

Cette version (2) est sans doute meilleure.

La plage des cellules de destination n'est plus définie.

On recherche maintenant les cellules dont le 1er caractère est un chiffre et le fond coloré :

Code:
Sub Copie(ref As Range, source As Range)
Dim c As Range, lig As Variant
For Each c In Cells.SpecialCells(xlCellTypeConstants)
  If c Like "#*" And c.Interior.ColorIndex <> xlNone Then
    lig = Application.Match(c, ref, 0)
    If IsNumeric(lig) Then c.Offset(1) = source(lig)
  End If
Next
End Sub

PS
: j'ai corrigé la cellule "14A"...

A+
 

Pièces jointes

  • classeur démo transposition en 2 tableaux(2).xls
    60 KB · Affichages: 16

Ayral10

XLDnaute Junior
Re : tranposer un tableau vertical en deux autres avec raffraississement

super, merçi
ça m'a l'air bien posé , bravo pour tes connaissances !
alors pour essayer de mieux comprendre le vba , je vois noter ColorIndex, je sais depuis peu que chaque couleur à un code chiffré, faut-il rentrer ce code pour chaque colonne concernée ? ou le code tel quel, prendra en compte la couleur présente ( nimporte la quelle ) ?
 

job75

XLDnaute Barbatruc
Re : tranposer un tableau vertical en deux autres avec raffraississement

Re,

Pour terminer voici une solution classique par formules.

En B4 de la feuille "NEUF", à copier sur les plages concernées :

Code:
=INDEX('TABLEAU INITIAL'!$A:$A;EQUIV(B3;'TABLEAU INITIAL'!$C:$C;0))
En B4 de la feuille "OBLITERE" :

Code:
=INDEX('TABLEAU INITIAL'!$B:$B;EQUIV(B3;'TABLEAU INITIAL'!$C:$C;0))
Pour masquer les valeurs zéros, les cellules sont au format personnalisé 0;;

Fichier joint.

A+
 

Pièces jointes

  • classeur démo par formules(1).xls
    62.5 KB · Affichages: 21

Ayral10

XLDnaute Junior
Re : tranposer un tableau vertical en deux autres avec raffraississement

effectivement cela à l'air plus simple pour moi !
il y a plus besoin de vba dans ce cas là ?
les formules sont directement imbriquées dans chaque cellules sans utiliser de mfc ? si je comprends bien ?

cette formule est valable pour mon exemple où mes tableaux sont dans le même fichier, par onglet.
Dans le cas de fichiers séparés , la liaison se fait automatiquement dès lors que l'on rentre la cellule correspondante ?
Car dans mon utilisation il s'agit , pour le moment, de deux fichiers différends, cad le tableau initial est dans un premier fichier, les autres , horizontaux ,dans un second. Si cela est devient trop litigieux ou complexe, je peux rajouter les onglets des tableaux horizontaux dans le fichier initial .
merci
 

job75

XLDnaute Barbatruc
Re : tranposer un tableau vertical en deux autres avec raffraississement

Re,

Pour créer les formules avec 2 fichiers différents, ouvrez les 2 fichiers.

Si le fichier source se nomme FichierSource.xlsx, les formules en B4 s'écrivent :

Code:
=INDEX('[FichierSource.xlsx]TABLEAU INITIAL'!$A:$A;EQUIV(B3;'[FichierSource.xlsx]TABLEAU INITIAL'!$C:$C;0))
Code:
=INDEX('[FichierSource.xlsx]TABLEAU INITIAL'!$B:$B;EQUIV(B3;'[FichierSource.xlsx]TABLEAU INITIAL'!$C:$C;0))
Après fermeture du fichier source, le chemin d'accès apparaît.

Les formules se mettent à jour automatiquement, même si le fichier source est fermé.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 415
Messages
2 088 238
Membres
103 779
dernier inscrit
FrancoisB2