IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[Excel 2010] Exclusion d'onglet à l'extraction de données dans un onglet "Recap"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Par défaut [Excel 2010] Exclusion d'onglet à l'extraction de données dans un onglet "Recap"
    Bonjour,

    après avoir passer du temps à faire fonctionner un petit bout de code pour extraire des données de plusieurs onglets dans un seul, j'aimerais savoir s'il est possible de "sauter" un onglet si par exemple une cellule de cet onglet contient l'un des mots "Fermé" ou "Annulé" ?

    Je suppose qu'il faudrait faire un test par onglet pour savoir si la cellule est "égale" à "Fermé" ou "Annulé" et si oui je passe à l'onglet suivant, sinon je continu d'exécuter le code et j'extrais les données ... c'est ça?

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    Option Explicit
     
    Dim f As Worksheet, derCol&, i&, lgn&
     
    Sub Import()
     
       Application.ScreenUpdating = False
       Range("A8").CurrentRegion.Offset(1, 0).ClearContents 'On réinitialise le tableau de départ
        i = 7 ' Numero de la 1ere ligne à utiliser
        For Each f In Worksheets
            If f.Name Like "Client*" Then     'Boucle qui permet de passer toutes les feuilles qui contiennent
                                               'le mot "Projet " dans le nom de leur onglet
     
    ' pour chaque feuille "Client*" je copie les cellules suivantes et je les colle dans l'onglet "Recap" sur une seule ligne et une ligne par onglet Client
     
    ' ici j'imagine qu'il me faut faire une boucle pour aller d'un onglet Client à un autre (ou le For Each ci-dessus peut-être utilisé ...?):
     
               'Je.parcours.le.premier.onglet jusqu 'au dernier (if?)
     
                               Sheets(f.Name).Select 'activation onglet client*
                               Range("D14").Select 'sélection colonne D14 client*
                               Selection.Copy
                               Sheets("Recap").Select 'activation onglet Recap
                               Range("B" & i).Select 'On donne la lettre de la colonne pour ici cela sera "B" i represente la ligne
                               Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                   :=False, Transpose:=False
     
                               Sheets(f.Name).Select 'activation onglet client*
                               Range("I14").Select
                               Selection.Copy
                               Sheets("Recap").Select
                               Range("C" & i).Select
                               Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                   :=False, Transpose:=False
     
                               Sheets(f.Name).Select 'activation onglet client*
                               Range("M5:T5").Select
                               Selection.Copy
                               Sheets("Recap").Select
                               Range("D" & i).Select
                               Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                   :=False, Transpose:=False
     
                               Sheets(f.Name).Select 'activation onglet client*
                               Range("D27").Select
                               Selection.Copy
                               Sheets("Recap").Select
                               Range("L" & i).Select
                               Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                   :=False, Transpose:=False
     
                               Sheets(f.Name).Select 'activation onglet client*
                               Range("M6:T6").Select
                               Selection.Copy
                               Sheets("Recap").Select
                               Range("M" & i).Select
                               Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                   :=False, Transpose:=False
     
                                'On incremente la ligne
                                i = i + 1
            End If
        Next f
     
    End Sub

  2. #2
    Membre confirmé Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Par défaut
    Bon j'ai déjà une idée qui fonctionne ("test à l'envers"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    Option Explicit
     
    Dim f As Worksheet, derCol&, i&, lgn&
     
    Sub Import()
     
    '   Application.ScreenUpdating = False
    '   Range("A8").CurrentRegion.Offset(1, 0).ClearContents 'On réinitialise le tableau de départ
        i = 7 ' Numero de la 1ere ligne à utiliser
        For Each f In Worksheets
            If f.Name Like "Client*" Then     'Boucle qui permet de passer toutes les feuilles qui contiennent
                                               'le mot "Projet " dans le nom de leur onglet
     
    ' pour chaque feuille "Client*" je copie les cellules suivantes et je les colle dans l'onglet "Recap" sur une seule ligne et une ligne par onglet Client
     
    ' ici j'imagine qu'il me faut faire une boucle pour aller d'un onglet Client à un autre (ou le For Each ci-dessus peut-être utilisé ...?):
     
               'Je.parcours.le.premier.onglet jusqu 'au dernier (if?)
     
               Sheets(f.Name).Select 'activation de l'onglet client pour le test
               If Range("B1").Value = "Oui" Then
     
                               Sheets(f.Name).Select 'activation onglet client*
                               Range("D14").Select 'sélection colonne D14 client*
                               Selection.Copy
                               Sheets("Recap").Select 'activation onglet Recap
                               Range("B" & i).Select 'On donne la lettre de la colonne pour ici cela sera "B" i represente la ligne
                               Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                   :=False, Transpose:=False
     
                               Sheets(f.Name).Select 'activation onglet client*
                               Range("I14").Select
                               Selection.Copy
                               Sheets("Recap").Select
                               Range("C" & i).Select
                               Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                   :=False, Transpose:=False
     
                               Sheets(f.Name).Select 'activation onglet client*
                               Range("M5:T5").Select
                               Selection.Copy
                               Sheets("Recap").Select
                               Range("D" & i).Select
                               Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                   :=False, Transpose:=False
     
                               Sheets(f.Name).Select 'activation onglet client*
                               Range("D27").Select
                               Selection.Copy
                               Sheets("Recap").Select
                               Range("L" & i).Select
                               Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                   :=False, Transpose:=False
     
                               Sheets(f.Name).Select 'activation onglet client*
                               Range("M6:T6").Select
                               Selection.Copy
                               Sheets("Recap").Select
                               Range("M" & i).Select
                               Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                                   :=False, Transpose:=False
     
                                'On incremente la ligne
                                i = i + 1
                    Else
     
                End If
            End If
        Next f
     
    End Sub
    A voir si je peux cumuler deux tests ("si annulé ou si fermé")...

  3. #3
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour
    une piste peut etre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub Test()
        Dim Sh As Worksheet
           i = 1
        For Each Sh In Worksheets
            If Sh.Cells(1, 1) <> "cloture" Or Sh.Cells(1, 1) <> "annulé" Then
            Sheets("feuil1").Cells(i, 1) = Sh.Cells(2, 1)
            End If
            i = i + 1
        Next Sh
    End Sub

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/07/2014, 10h37
  2. Extraction de données dans Excel
    Par benadry dans le forum Excel
    Réponses: 5
    Dernier message: 17/06/2013, 12h03
  3. Réponses: 3
    Dernier message: 06/01/2012, 11h32
  4. [XL-2003] Extractions de données d'un onglet à un autre
    Par papoucasa dans le forum Excel
    Réponses: 1
    Dernier message: 12/07/2011, 21h06
  5. extraction de données dans excel
    Par massilia80 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/10/2006, 12h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo