Transposition de valeur et regroupement d'onglet

@Sophie

Tu a écrit :

Le format NOMBRE sans décimale fonctionne parfaitement

pour quoi ? pour la colonne SKU ? si oui, je ne trouve pas ce format adapté pour une colonne qui contient des valeurs non numériques, car concaténation avec le code couleur qui peut être alphanumérique ; par exemple "BK01".

dhany

OK je te laisse maitre du format

@Sophie

je te retourne ton fichier modifié :

À l'ouverture du fichier, tu es sur la feuille "Export" ; y'a aucune donnée.

Ctrl e ➯ résultats corrects, et uniquement pour toutes les feuilles à consolider.

* si tu fais Ctrl e à partir d'une des feuilles à consolider : résultats pour cette feuille uniquement.

* si tu fais Ctrl e à partir d'une autre feuille, ça fait rien du tout, et ça reste sur la même feuille.


pour tester les feuilles, j'ai changé de méthode pour une autre qu'il te sera très facile d'adapter dans le code VBA :

y'a qu'cette seule instruction à modifier : LFI = Array("OFFRES", "EXPORT TOOL", "Export")

si par exemple tu veux ajouter une feuille "Bidule", tu l'ajoutes ainsi :

LFI = Array("OFFRES", "EXPORT TOOL", "Export", "Bidule")

t'es pas obligée d'le mettre à la fin, tu peux l'mettre au début ou au milieu ; et si t'ajoutes beaucoup d'feuilles à ignorer, tu peux utiliser le caractère souligné de continuation de ligne pour éviter qu'ta ligne soit trop longue ; exemple :

LFI = Array("Bidule1", "Bidule2", "Bidule3", "OFFRES", "Bidule4", "Bidule5", "Bidule6", _
  "EXPORT TOOL", "Bidule7", "Bidule8", "Bidule9", "Export", "Bidule10", "Bidule11", "Bidule12")

remarque : sur ta feuille "Export", j'ai déjà mis un format Texte toute la colonne J "SKU"


à te lire pour avoir ton avis.

dhany

Bonjour,

Apparemment les boutons ne sont plus d'actualité.

Une mise à jour avec l'exécution de la procédure de recopie avec le raccourci Ctrl + Maj + X.

Le raccourci Ctrl + E étant réservé pour les versions récentes d'Excel !...

Cdlt.

Option Explicit

Dim wsExport As Worksheet
'-----------------------------------------------------------------------------------
Public Sub Consolidate_data()
'Ctrl + Maj + W
Dim tbl, Arr()
Dim lastCol As Long, lastRow As Long, I As Long, J As Long, k As Long

    Set wsExport = Worksheets("Export")

    Select Case ActiveSheet.Name
        Case "Export", "Offres", "Tool Export": Exit Sub
        Case Else:
    End Select

    With ActiveSheet
        lastCol = .Cells(5, .Columns.Count).End(xlToLeft).Column
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        tbl = .Cells(5, 1).Resize(lastRow - 4, lastCol - 1)
        For I = 2 To UBound(tbl)
            For J = 10 To UBound(tbl, 2)
                If tbl(I, J) <> "" Then
                    ReDim Preserve Arr(11, k + 1)
                    Arr(0, k) = tbl(I, 1)
                    Arr(1, k) = tbl(I, 2)
                    Arr(2, k) = tbl(I, 3)
                    Arr(3, k) = tbl(I, 4)
                    Arr(4, k) = tbl(I, 5)
                    Arr(5, k) = tbl(I, 6)
                    Arr(6, k) = tbl(I, 7)
                    Arr(7, k) = tbl(I, 8)
                    Arr(8, k) = tbl(1, J)
                    Arr(9, k) = Arr(5, k) & Arr(7, k) & Arr(8, k)
                    Arr(10, k) = tbl(I, J)
                    k = k + 1
                End If
            Next J
        Next I
    End With

    With wsExport
        lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        With .Cells(lastRow, 1)
            .Resize(UBound(Arr, 2), 10).NumberFormat = "@"
            .Resize(UBound(Arr, 2), 11).Value = Application.Transpose(Arr)
        End With
        .Activate
    End With

End Sub
'-----------------------------------------------------------------------------------
Public Sub Clear_data()

    Set wsExport = Worksheets("Export")
    wsExport.Cells(1).CurrentRegion.Offset(1).Clear

End Sub

@Dhany, merci ta solution est aux petits oignons, c'est impeccable, je vais pouvoir l'appliquer pour les super Users

@Jean-Eric, merci pour ta solution, elles sera simple a maintenir pour l'utilisateur quiotidien, qui ne travaille qu'a la worksheet.

Merci pour votre aide infaillible ces 3 derniers jours.

Je vous aide un excellent dimanche ensoleillé

Sophie

Bonjour Sophie,

merci pour ton retour !

je te souhaite un très bon dimanche ensoleillé à toi aussi !

dhany

Re,

@ Sophie,

Les 2 propositions sont identiques (une fois les boutons inutiles, supprimés).

Par contre, les méthodes pour arriver aux résultat sont très différentes.

Et je ne comprends donc pas tes propos vis à vis des super users et de l'utilisateur lambda.

Mais le principal, est que tu es trouvé chaussure à ton pied.

Bon dimanche.

Nota : ma procédure s'exécute avec Ctrl + Maj + W (pas X !...)

@ Jean-Eric pour lancer ta procedure, je n'avais pas compris l'execution du CTRL+MAJ+W depuis un onglet ZZ*, je pensais que c'etait depuis l'onglet EXPORT et du coup il ne se passait rien

Par contre je souhaiterais dissocier les 2 options, a voir transfert de tous les onglets ou d'un seul, via un bouton.

J'ai deja celui pour la macro de transfert pour l'onglet uniquement ACTIF (consolidate_data).

Si je veux mettre un autre bouton pour lancer pour tous les onglets, quelle macro lui affecter?

Re,

Une nouvelle proposition à étudier :

1 - Ctrl + Maj + w : copie des données de la feuille active

2 - Bouton Transfer : copie de toutes les feuilles (les données existantes de la feuille Export sont effacées)

A te relire.

Cdlt.

Hello Jean-Eric

J'ai un retour de code erreur sur cette ligne qd je lance la macro 2 (toutes les feuilles)

tbl = .Cells(5, 1).Resize(lastRow - 4, lastCol - 1)

J'ai ajouté d'autres onglets a ne pas prendre en compte et je les ai bien mis en variable.

Pourrais tu regarder?

merci

Re,

Le nom de feuille Export n'était pas valide (EXPORT).

Cdlt.

merci

Bonne Soiree

Rechercher des sujets similaires à "transposition valeur regroupement onglet"