Sélection d'une plage de cellule en fonction d'un critère

Bonjour la communauté,

J'arrive à bout touchant de mon projet, il me manque juste une petite chose.

Dans le classeur joint, je dois juste sélectionner automatiquement la plage de cellule par rapport au CodeArticle.

Petite explication : le code déjà en place prend cette sélection pour créer un fichier, récupère le CodeArticle pour nommer ce fichier et supprime cette sélection.

Ensuite, il doit passer au CodeArticle suivant pour recommencer le processus.

Pour le moment, je dois faire cette sélection manuellement et quand il y a plusieurs centaines de ligne, cela me prend trop de temps.

Merci pour votre aide.

26a.xlsx (8.53 Ko)

Bigre...difficile à piger.

Ce que j'ai cru comprendre à partir de votre exemple :
Le programme commence à sélectionner la plage A2:E5 correspondant au code article 1001. Il la sauvegarde dans le fichier 1001.xlsx
Ensuite, il passe à la plage A6:E8 pour le code 1002 et la sauvegarde dans le fichier 1002.xlsx
Idem pour les plages A9:E15 (1003) et A16:E18 (1004).
C'est ce que vous voulez faire ?

bonjour,

si j'ai bien compris la demande fort sommaire.

Sub aargh()
    With Sheets("feuil1") '<- à adapter
        oldref = ""
        derlig = .Cells(Rows.Count, 1).End(xlUp).Row
        For ligne = 2 To derlig + 1
            If .Cells(ligne, 2) <> oldref Then
                If oldref <> "" Then
                    .Range("B" & pl & ":"B & dl).Select
                    traitement_des_donnees_selectionnees 'à adapter mettre le nom de la procédure à exécuter sur les données sélectionnées
                End If
                pl = ligne
                oldref = .Cells(ligne, 2)
            End If
            dl = ligne
        Next ligne
        '.rows("2:" & derlig).delete shift:=xlup 'supprimer toutes les lignes (enlever le commentaire pour activer l'instruction)
    End With
End Sub

Bonjour,

Comme tu n'as pas mis le code déja en place, j'imagine que tu peux t'en sortir si on arrive a identifier chaque groupe ayant le meme code article ?
Un test :

Sub test1()
colonne = 2

For Liste = 2 To Cells(Rows.Count, colonne).End(xlUp).Row
    Plage = Liste
Retour: Plage = Plage + 1
    If Cells(Liste, colonne).Value = Cells(Plage, colonne).Value GoTo Retour
    Range(Cells(Liste, colonne), Cells(Plage - 1, colonne)).Select
    MsgBox Range(Cells(Liste, colonne), Cells(Plage - 1, colonne)).Address
    Liste = Plage - 1
Next Liste
End Sub

A+

@Optimix : une fois la sélection faite et le fichier créé, les lignes entières sélectionnées sont supprimées. Après on recommence la procédure en recherchant le code 1002. On sélectionne toutes les lignes avec ce code, on crée le fichier et on supprime.

Donc, la recherche commence toujours par la ligne 2. La raison de cette proc est juste de sélectionner la plage en fonction du CodeArticle. Je traite cette plage avec une autre proc qui gère la création du fichier, la suppression des lignes.

@h2so4 : merci pour le code, ça m'aide déjà beaucoup.

@Geof52 : voilà le code existant (précision, la base vient de ExtendOffice)

Je l'ai adapté et comme précisé, il me manque la partie de la sélection de la plage. J'essaie d'y intégrer ton code ou celui de h2so4.

Déjà, un tout grand merci pour l'aide et j'espère pouvoir faire de même un jour

Sub ExportRangetoExcel()
'Update 20130916 KutoolsforExcel Ctrl + m

    Dim wb As Workbook
    Dim saveFile As String
    Dim WorkRng As Range
    Dim address As String
    Dim PlageSel As String
    Dim NomFeuille As String
    Dim CodeArticle As String
    Dim defult As Integer

    On Error Resume Next

    'CODE A CREER Sélection automatique de la plage selon code article

    Set WorkRng = Application.Selection                 'Récupération de la plage sélectionnée

    PlageSel = Selection.address                        'Convertir coordonnées Range en texte pour modifier la plage
    PlageSel = Replace(PlageSel, "$A$2", "$A$1")        'Modification de la plage de cellules

    Set WorkRng = Range(PlageSel)

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    defult = Application.SheetsInNewWorkbook
    Application.SheetsInNewWorkbook = 1
    Set wb = Application.Workbooks.Add
    Application.SheetsInNewWorkbook = defult
    WorkRng.Copy                                         'Copie de la sélection
    wb.Worksheets(1).Paste

    CodeArticle = Worksheets(1).Range("B2").Value        'Récupération du code article

    saveFile = Application.GetSaveAsFilename(InitialFileName:="C:\Temp\" & CodeArticle, fileFilter:="Excel Workbooks (*.xlsx),*.xlsx")
    wb.SaveAs Filename:=saveFile
    wb.Close
    Application.CutCopyMode = False

    'Suppression de la sélection
    'Selection.Delete Shift:=xlUp

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

End Sub

Essayez déjà ceci. Pour le moment, on créée les fichiers sans détruire les lignes. On verra après.

43a.xlsm (21.71 Ko)

@Optimix : un très très grand merci ça fait exactement ce dont j'ai besoin.

Et bien tant mieux. Je n'étais pas très sûr de mon coup.

Bon vent.

Rechercher des sujets similaires à "selection plage fonction critere"