XL 2010 Rangement

fama5312

XLDnaute Nouveau
bonjour
Je vous remercie de m'accueillir dans ce forum.
Je dispose d'un fichier Excel avec des données sur la feuille 1. Sur la feuille 2 je souhaiterais compléter le tableau avec les données de la feuille1 rangées par colonne.
Ex dans la colonne AB je souhaite mettre tous les articles commençant par AB avec l'intitulé et le prix dans les colonnes suivantes. et ceci par ordre croissant
EX : le 1er AB trouvé , puis le second etc
J'ai trouvé avec la fonction RECERCH comment compléter les colonnes B et C par ex à partir de la colonne A.
Par contre je ne sais pas faire pour la colonne A.
Merci de votre aide
bien cordialement
 

Pièces jointes

  • RECAP demo.xlsx
    286.6 KB · Affichages: 8
Solution
Bonjour,
Effectivement je n'effaçais pas la feuille Vendredi avant de commencer à la remplir.
Dans cette PJ j'efface toute la feuille avant de commencer, avec :
VB:
.[A3:AM10000].ClearContents
et ceci par ordre croissant
Par contre je n'ai pas traité ce point.
Par ordre croissant de quoi ? Par ordre croissant sur la référence ou sur la quantité ?
( colonne A ou C ? )

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Fama, et bienvenu(e) sur XLD,
Un essai en PJ avec cette macro :
VB:
Sub Exporter()
Dim T, Nom, Ligne, Début, N%, Colonne%
    T = [A1].CurrentRegion
    Nom = Array("AB", "CD", "EF", "GH", "IJ", "KL", "MN", "OP", "RS", "TU", "ZZ", "WW", "XX")
    Ligne = Array(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3)
    With Sheets("VENDREDI")
        For L = 1 To UBound(T)
            Début = UCase(Left(T(L, 1), 2))
            If Début = "0" Or Début = "" Then Exit For
            For N = 0 To 13
                If Nom(N) = Début Then Exit For
            Next N
            If N < 13 Then
                Colonne = 3 * N + 1
                .Cells(Ligne(N), Colonne + 0) = T(L, 1)
                .Cells(Ligne(N), Colonne + 1) = T(L, 2)
                .Cells(Ligne(N), Colonne + 2) = T(L, 3)
                Ligne(N) = Ligne(N) + 1
            End If
        Next L
        .Select
    End With
End Sub
Pensez à valider les macros si ce n'est déjà fait.
 

Pièces jointes

  • RECAP demo.xlsm
    313.1 KB · Affichages: 3

fama5312

XLDnaute Nouveau
Bonjour Fama, et bienvenu(e) sur XLD,
Un essai en PJ avec cette macro :
VB:
Sub Exporter()
Dim T, Nom, Ligne, Début, N%, Colonne%
    T = [A1].CurrentRegion
    Nom = Array("AB", "CD", "EF", "GH", "IJ", "KL", "MN", "OP", "RS", "TU", "ZZ", "WW", "XX")
    Ligne = Array(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3)
    With Sheets("VENDREDI")
        For L = 1 To UBound(T)
            Début = UCase(Left(T(L, 1), 2))
            If Début = "0" Or Début = "" Then Exit For
            For N = 0 To 13
                If Nom(N) = Début Then Exit For
            Next N
            If N < 13 Then
                Colonne = 3 * N + 1
                .Cells(Ligne(N), Colonne + 0) = T(L, 1)
                .Cells(Ligne(N), Colonne + 1) = T(L, 2)
                .Cells(Ligne(N), Colonne + 2) = T(L, 3)
                Ligne(N) = Ligne(N) + 1
            End If
        Next L
        .Select
    End With
End Sub
Pensez à valider les macros si ce n'est déjà fait.
merci pour cette réponse très rapide.
En fait dans la feuille 1, les lignes 1 à 999 correspondent à vendredi1, de 1000 à 1999 à Vendredi, de 2000à 2999 à Samedi et 3000 à 3999 à dimanche. Ceci afin de remplir toutes les feuilles. De plus les données doivent être classées dans l'ordre croissant.
encore merci pour votre retour. Je suis complétement béotien dans les macros.
 

fama5312

XLDnaute Nouveau
Bonsoir à tous,
Une proposition avec formule matricielle à valider avec Maj+Ctrl+Entrée.
Uniquement sur Vendredi
Cordialement.

Edit :
Oops, Doublon avec JHA
merci pour cette réponse très rapide.
En fait dans la feuille 1, les lignes 1 à 999 correspondent à vendredi1, de 1000 à 1999 à Vendredi, de 2000à 2999 à Samedi et 3000 à 3999 à dimanche. Ceci afin de remplir toutes les feuilles. De plus les données doivent être classées dans l'ordre croissant.
encore merci pour votre retour.
 

fama5312

XLDnaute Nouveau
Bonjour Fama, et bienvenu(e) sur XLD,
Un essai en PJ avec cette macro :
VB:
Sub Exporter()
Dim T, Nom, Ligne, Début, N%, Colonne%
    T = [A1].CurrentRegion
    Nom = Array("AB", "CD", "EF", "GH", "IJ", "KL", "MN", "OP", "RS", "TU", "ZZ", "WW", "XX")
    Ligne = Array(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3)
    With Sheets("VENDREDI")
        For L = 1 To UBound(T)
            Début = UCase(Left(T(L, 1), 2))
            If Début = "0" Or Début = "" Then Exit For
            For N = 0 To 13
                If Nom(N) = Début Then Exit For
            Next N
            If N < 13 Then
                Colonne = 3 * N + 1
                .Cells(Ligne(N), Colonne + 0) = T(L, 1)
                .Cells(Ligne(N), Colonne + 1) = T(L, 2)
                .Cells(Ligne(N), Colonne + 2) = T(L, 3)
                Ligne(N) = Ligne(N) + 1
            End If
        Next L
        .Select
    End With
End Sub
Pensez à valider les macros si ce n'est déjà fait.
bonjour Sylvanu
Merci beaucoup; J'ai pu faire fonctionner votre macro pour extraire les jours suivants.
Par contre où cette macro fait elle référence à la feuil1. CAr lorsque je modifie cette feuille les modifications ne sont pas prises en compte
bien cordialement
 

fama5312

XLDnaute Nouveau
Bonsoir,
La macro fait référence à la feuille d'où elle est lancée, donc ici de la Feuil1.
Si vous modifiez les données, il faut appuyer de nouveau sur le bouton.
Par contre je ne rempli que la feuille Vendredi.
bonjour
j'ai fait ce que vous dites et cela ne vide pas les colonnes du vendredi. Excusez moi mais je suis vraiement débutant en macro. Je vous joins à nouveau le fichier avec la feuille 1 vide de données.
J en profite pour vous remercier de votre aide et vous présenter mes meilleurs vœux pour 2025
André
 

Pièces jointes

  • RECAP demo (7)_vide.xlsm
    204.9 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Effectivement je n'effaçais pas la feuille Vendredi avant de commencer à la remplir.
Dans cette PJ j'efface toute la feuille avant de commencer, avec :
VB:
.[A3:AM10000].ClearContents
et ceci par ordre croissant
Par contre je n'ai pas traité ce point.
Par ordre croissant de quoi ? Par ordre croissant sur la référence ou sur la quantité ?
( colonne A ou C ? )
 

Pièces jointes

  • RECAP demo (7)_vide.xlsm
    211.6 KB · Affichages: 2
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
J'ai rajouté cette macro qui rangera les données :
VB:
Sub Tri()
Application.ScreenUpdating = False
Dim Plage, DL%
With Sheets("VENDREDI")
    For C = 1 To 37 Step 3
        If .Cells(3, C) <> "" Then
            DL = .Cells(10000, C).End(xlUp).Row
            Set Plage = .Range(.Cells(3, C), .Cells(DL, C + 2))
            Plage.Resize(DL).Sort key1:=.Cells(3, C), order1:=xlAscending, Header:=xlNo
        End If
    Next C
End With
End Sub
 

Pièces jointes

  • RECAP demo (8).xlsm
    77.3 KB · Affichages: 4

Discussions similaires

Réponses
11
Affichages
360
Réponses
5
Affichages
462

Membres actuellement en ligne

Statistiques des forums

Discussions
315 207
Messages
2 117 383
Membres
113 102
dernier inscrit
Ben972