Sélection de plusieurs fichiers

Bonjour,

J'ai 20 classeurs qui sont tous structurés de la même façon (100 onglets numérotés de 1 à 100).

J'ai posté un exemple de fichier dans ce message.

Je suis à la recherche d'une macro qui me permette de sélectionner automatiquement certains onglets d'un classeur sans avoir à utiliser CTRL + clic. Par exemple les onglets 23-44-50-60-52-78-99-100.

Comme je réalise au moins 15 traitements par semaine sur chaque classeur cela m'oblige à modifier la sélection en permanence.

J'avais pensé à créer une boite de dialogue (formulaire de saisie) pour sélectionner les onglets de façon à ne pas parcourir sans cesse le classeur pour les sélectionner manuellement mais le langage VBA m'est totalement inaccessible

Merci d'avance à la personne qui pourra m'aider

Sarah

7exemple.xlsm (145.78 Ko)

Bonjour,

voici une solution où la liste est codée dans le programme, pour répondre à ton besoin, je pense que le mieux serait d'avoir une feuille paramètre dans laquelle tu mettrais la liste des feuilles à mettre dans la synthèse, à toi de voir.

Sub aargh()
Dim wsn As String
    Set wss = Sheets("synthese")
    For Each wsn In Split("23-44-50-60-52-78-99-100", "-")
        Set ws = Sheets(wsn & "")
        If ws.Name <> wss.Name Then
            dc = ws.Cells(1, Columns.Count).End(xlToLeft).Column
            dcs = wss.Cells(1, Columns.Count).End(xlToLeft).Column
            If dcs <> 1 Then dcs = dcs + 2
            dl = ws.Cells(Rows.Count, 1).End(xlDown).Row
            Range(ws.Cells(1, 1), ws.Cells(dl, dc)).Copy wss.Cells(1, dcs)
        End If
    Next
End Sub

si tu veux que la macro demande quelles feuilles mettre dans la synthèse

Sub aargh()
Dim wsn As String
    Set wss = Sheets("synthese")
    wsl=inputbox("donner la liste des feuilles à mettre dans la synthèse (séparées par un -)")
    For Each wsn In Split(wsl,"-")
        Set ws = Sheets(wsn & "")
        If ws.Name <> wss.Name Then
            dc = ws.Cells(1, Columns.Count).End(xlToLeft).Column
            dcs = wss.Cells(1, Columns.Count).End(xlToLeft).Column
            If dcs <> 1 Then dcs = dcs + 2
            dl = ws.Cells(Rows.Count, 1).End(xlDown).Row
            Range(ws.Cells(1, 1), ws.Cells(dl, dc)).Copy wss.Cells(1, dcs)
        End If
    Next
End Sub

Super !!!!

J'avais pas osé te solliciter à nouveau alors MERCI d'être venu à mon secours

Je te tiens au courant,

@+

Sarah

me revoilà,

Cela ne marche pas malheureusement quelle que soit la macro utilisée

j'ai posté la capture d’écran de l'erreur signalé par excel !

J'espère que tu pourras faire quelque chose

Sarah

capture d ecran 6033

enlève l'instruction Dim

Sub aargh()
    Set wss = Sheets("synthese")
    wsl = InputBox("donner la liste des feuilles à mettre dans la synthèse (séparées par un -)")
    For Each wsn In Split(wsl, "-")
        Set ws = Sheets(wsn & "")
        If ws.Name <> wss.Name Then
            dc = ws.Cells(1, Columns.Count).End(xlToLeft).Column
            dcs = wss.Cells(1, Columns.Count).End(xlToLeft).Column
            If dcs <> 1 Then dcs = dcs + 2
            dl = ws.Cells(Rows.Count, 1).End(xlDown).Row
            Range(ws.Cells(1, 1), ws.Cells(dl, dc)).Copy wss.Cells(1, dcs)
        End If
    Next
End Sub

Merci ! Merci ! Merci!

Ça fonctionne super bien

Dernier petit détail mes tableaux font 100 colonnes et dans mon exemple j'avais mis 4 colonnes.

comment le spécifier dans la macro ?

Merci de ton aide

Sarah

bonjour,

Dernier petit détail mes tableaux font 100 colonnes et dans mon exemple j'avais mis 4 colonnes.

comment le spécifier dans la macro ?

la macro s'adapte automatiquement au nombre de colonnes trouvées

Cela ne marche pas pourtant

voilà le fichier avec les 100 colonnes et le message d'erreur affiché par excel.

Merci de ton aide

Sarah

capture d ecran 6073 capture d ecran 6074

Bonjour,

Tu reçois ce message car il ne trouve pas la feuille, vérifie le nom des feuilles et les noms que tu as donnés en réponse à la question ...

sinon mets-nous ton fichier.

le code ci-dessous devrait te permettre d'identifier la feuille qui pose problème.

Sub aargh()
    Set wss = Sheets("synthese")
    wsl = InputBox("donner la liste des feuilles à mettre dans la synthèse (séparées par un -)")
    For Each wsn In Split(wsl, "-")
        On Error GoTo terreur
        Set ws = Sheets(wsn & "")
        On Error GoTo 0
        If ws.Name <> wss.Name Then
            dc = ws.Cells(1, Columns.Count).End(xlToLeft).Column
            dcs = wss.Cells(1, Columns.Count).End(xlToLeft).Column
            If dcs <> 1 Then dcs = dcs + 2
            dl = ws.Cells(Rows.Count, 1).End(xlDown).Row
            Range(ws.Cells(1, 1), ws.Cells(dl, dc)).Copy wss.Cells(1, dcs)
        End If
ici:
    Next
    Exit Sub
terreur:
    MsgBox "feuille " & wsn & " non trouvée dans le classeur"
    Resume ici
End Sub

Ça marche !!!!!

Merci tu es génial *

@+

Sarah

Rechercher des sujets similaires à "selection fichiers"