Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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 ? )
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

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

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

Dernière édition:
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
235
Réponses
10
Affichages
202
  • Résolu(e)
Microsoft 365 DateDif()
Réponses
5
Affichages
170
Réponses
11
Affichages
425
  • Question Question
Microsoft 365 Souci de copie
Réponses
8
Affichages
217
Retour