Macro pour tableau comparatif : inverser son fonctionnement

Bonjour à tous

J'aurai besoin d'un coup de main pour modifier le fonctionnement de cette macro que nous utilisons au taf.

Son fonctionnement est ULTRA pratique (un truc de dingue) et facile à utiliser.

Explication :

On utilise 1 répertoire pour l'année

contenant autant de répertoire que de semaine dans l'année

contenant à leur tour des fichiers types pour la semaine

en clair :

2016>S01>Fichier_truc1, Fichier_Truc2

2016>S02>Fichier_truc1,, Fichier_Truc2

etc sur 52 semaines

Dans mon fichier de synthèse :

1

En colonne B, j'utilise mes semaines de l'année en guise de référence,

En colonne C jusqu'à... autant que j'en ai besoin : le lien vers la donnée que je veux.

Puis j'effectue un copier coller des liens de la première semaine sur l'ensemble de l'année

Ensuite je sélectionne la zone concernée puis je lance la macro qui va remplacer "S01" de la ligne S02 par la valeur.. S02 !

Puis S01 sera remplacé par S03 en ligne correspond à la valeur S03 etc

Ce qui permet de faire un tableau comparatif en 2 minutes au lieu de se taper chaque ligne manuellement.

Cela fonctionne parfaitement à condition d'opter pour un tableau dans lequel les semaines sur une seule colonne (ici la B)

J'ai besoin d'inverser son fonctionnement.

J'ai besoin d'étaler mes semaines de la colonne B à Z et d'avoir mes items dans la colonne A.

J'ai tenter de remplacer Rows par Columns et inversement mais ça ne fait rien, ça ne fonctionne pas...

Pouvez-vous m'aider ?

Je pense qu'en plus de me dépanner, cette macro pourra faire beaucoup d'heureux !!!

Je vous remercie par avance de votre aide !

Sub Tableau_comparatif()

'Designation de la valeur a remplacer dans rplct

rplct = "S01"
    k = 0
    L = 0
    PL = Selection.Row
    DL = Selection(Selection.Count).Row
    PC = Selection.Column
    DC = Selection(Selection.Count).Column
    For I = PL To DL
    For j = PC To DC

'Fonction de rechercher remplacer
'Pour designer la colonne de reference pour le rechercher remplacer il faut modifier le chiffre dans la parenthese (selection.row + k, 1).
'(selection.row + k, 2) = Ici 2 designe la colonne B

   ActiveSheet.Cells(PL + k, PC + L).Replace What:=rplct, Replacement:=Cells(Selection.Row + k, 2).Value, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    L = L + 1
    Next
    L = 0
    k = k + 1
    Next

'Message affiché à la fin de la macro
MsgBox "Opération terminée"

End Sub

Bonjour

Un question

Tu sélectionnes quoi , les colonnes (les semaines) ou les lignes (liens) ?

Donne un exemple de ce que tu vas sélectionner

Voici le guide ! Ce sera plus simple et limpide pour comprendre le fonctionnement actuel !

1 - Création du lien qui sera ensuite réutilisé pour toute l'année

1

2 - Copier/coller du lien sur les semaines suivantes

2

3 - Sélection de la zone que l'on veut faire modifier

3

4 - Application et résultat de la macro

4

Le problème est dans ce cas de conception de tableau

5

Les lignes correspondent aux items

les colonnes aux semaines

c'est là que ça coince.

Bonsoir

Pour avancer il faut répondre à la question

Banzai64 a écrit :

Tu sélectionnes quoi , les colonnes (les semaines) ou les lignes (liens) ?

Donne un exemple de ce que tu vas sélectionner

Sinon on fait une macro qui balaie toutes les colonnes de C à Z et qui remplace

Je me suis inspiré de ton image pour faire la macro

Sub Tableau_comparatif()
Dim Nblg As Long

  Nblg = Range("B" & Rows.Count).End(xlUp).Row
  For colonne = 3 To 26 ' de C à Z
    Range(Cells(2, colonne), Cells(Nblg, colonne)).Replace What:="S01", Replacement:=Cells(1, colonne).Value, LookAt:=xlPart, _
                                                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                                                ReplaceFormat:=False
  Next colonne
  'Message affiché à la fin de la macro
  MsgBox "Opération terminée"
End Sub

Voici la zone de selection dont j'ai besoin :

1

Le plus simple est que ce soit la zone de sélection (parceque cela dépend vraiment des fichiers sur lequel je tombe).

j'ai testé la macro que tu viens de poster, elle me donne le même résultat lorsque je testais les modifications que j'opérais sur la macro de mon côté :

2

Elle a carrément supprimé la notion de "S01" au lieu de la remplacer par la valeur présente dans la ligne 4 !

Bonsoir

C'est vrai j'ai loupé la ligne

Un fichier dès le départ aurait éviter ces problèmes

Sub Tableau_comparatif()
Dim Nblg As Long

  Nblg = Range("B" & Rows.Count).End(xlUp).Row
  For colonne = 3 To 26 ' de C à Z
   Range(Cells(5, colonne), Cells(Nblg, colonne)).Replace _
        What:="S01", Replacement:=Cells(4, colonne).Value, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
  Next colonne
  'Message affiché à la fin de la macro
 MsgBox "Opération terminée"
End Sub

Le fichier... bordel c'est tout à fait vrai, ça ne m'est même pas venu à l'esprit, le boulet...

Ta macro fonctionne parfaitement !!!! C'est excellent, le gain de temps, tu n'imagines même pas !

Un énorme merci pour ce gigantesque coup de main, vraiment c'est top !!!!

Et tu as gardé la zone de sélection, ce qui est excellent ! Tu fais un heureux ce soir !

Rechercher des sujets similaires à "macro tableau comparatif inverser fonctionnement"