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 :

Boucle Next sur plusieurs onglets


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 50
    Par défaut Boucle Next sur plusieurs onglets
    Bonjour,

    Je vous expose mon petit problème:
    J'ai un fichier excel avec 11 onglets.
    Dans ce fichier j'ai un onglet récap où sont stockés toutes mes valeurs.
    Je souhaiterai dans un premier temps à l'aide d'une boucle saisir dans chaque onglet de la cellule B30 à B37 les dates suivantes : janvier-12-> août-12.

    Ensuite dans mon fichier récap, je souhaiterai récupérer les valeurs dans la colonne C et les déverser dans chaque onglet en fonction de la date (cellule B30 à B37) dans les cellules D30->D37.
    En résumer tester la date dans chaque onglet de la cellule B30->B37 par rapport à l'onglet Récap dans la colonne A et récupérer les valeurs dans la colonne C (Récap) pour les déverser dans les cellules D30->D37 de chaque onglet.


    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Fais attention, le nom de la feuille doit être exactement "Récap", ou alors, modifie la macro :

    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
    Sub test()
        Dim Sh As Worksheet, i As Integer, feuille As Worksheet, Ligne As Long, C As Range
        For Each Sh In Worksheets
            If Sh.Name <> "Récap" Then
                Set feuille = Sh
                For i = 1 To 8
                    Sh.[B29].Offset(i) = DateSerial(2012, i, 1)
                    Sh.[B29].Offset(i).NumberFormat = "mmmm-yy"
                Next i
            End If
        Next Sh
        With Sheets("Récap")
            For Each C In .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp))
                Ligne = Application.Match(DateSerial(Year(C.Value), Month(C.Value), 1) * 1, feuille.[B:B], 0)
                For Each Sh In Worksheets
                    If Sh.Name <> "Récap" Then
                        Sh.Cells(Ligne, 4).Value = Sh.Cells(Ligne, 4).Value + C.Offset(, 2).Value
                    End If
                Next Sh
            Next C
        End With
    End Sub

  3. #3
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Edit: Désolé, pas rafraichi, donc même si légèrement différent, ca fait doublon avec la propal de DanielC


    Bonjour,

    L'explication n'est pas hyper claire, perso je ne comprends pas bien ce qu'on a comme données dans l'onglet récap, si les dates sont au même endroit pas besoin de recherche on pourrait intégrer ça dans la boucle.

    Quoi qu'il en soit, voici déjà un exemplepour boucler sur les onglets et y écrire les dates (! j'ai utilisé de "vrai" date avec le 1er du mois, en fonction de ce qui est réellement utilisé, il faudra adapté)

    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
    Sub BoucleSheets()
    Dim WsRecap As Worksheet, Ws As Worksheet
    Dim R As Byte
     
    Set WsRecap = Sheets("Récap") 'Affecte la feuille récap à la variable
     
    For Each Ws In ActiveWorkbook.Worksheets 'Boucle sur toutes les feuilles du classeur
        If Ws.Name <> WsRecap.Name Then 'Test si la feuille = feuille récap
            For R = 30 To 37 'Boucle pour saisie des dates
                Ws.Cells(R, 2) = DateSerial(2012, R - 29, 1) 'Ecrit la date (1er jour du mois) dans b30->b37
            Next R
        End If
    Next Ws
     
    End Sub

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 50
    Par défaut
    Est-il possible de rajouter un 2ème test dans ton code.
    Je m'explique: Autre que le test sur la date Il faudrait que la cellule I18 de chaque onglet soit égale aux valeurs de la colonne B de l'onglet RECAP.
    Pour que l'on puisse recopier les valeurs.
    Donc 2 correspondance:
    . la date c'est ok.
    . et la valeur en cellule I18 qui doit correspondre à la valeur en colonne B.

    Dans la colonne B de l'onglet Récap il y a plusieurs valeurs différentes.
    La cellule I18 de chaque onglet est une sorte de pivot qui me permet de tester dans quel onglet je dois déverser mes valeurs.
    Pour ce faire je dois tester la date en cellule B30à B37 et la valeur en I18 de chaque onglet afin de récupérer mes valeurs dans le tableau de l'onglet RECAP.

    Merci

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    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
    Sub test()
        Dim Sh As Worksheet, i As Integer, feuille As Worksheet, Ligne As Long, C As Range
        For Each Sh In Worksheets
            If Sh.Name <> "Récap" Then
                Set feuille = Sh
                For i = 1 To 8
                    Sh.[B29].Offset(i) = DateSerial(2012, i, 1)
                    Sh.[B29].Offset(i).NumberFormat = "mmmm-yy"
                Next i
            End If
        Next Sh
        With Sheets("Récap")
            For Each C In .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp))
                Ligne = Application.Match(DateSerial(Year(C.Value), Month(C.Value), 1) * 1, feuille.[B:B], 0)
                For Each Sh In Worksheets
                    If Sh.Name <> "Récap" And Sh.[I18] = C.Offset(, 1).Value Then
                        Sh.Cells(Ligne, 4).Value = Sh.Cells(Ligne, 4).Value + C.Offset(, 2).Value
                    End If
                Next Sh
            Next C
        End With
    End Sub

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 50
    Par défaut Boucle next sur plusieurs onglets
    C'est bizarre, j'ai une erreur incompatibilité de type sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne = Application.Match(DateSerial(Year(C.Value), Month(C.Value), 1) * 1, feuille.[B:B], 0)
    Le programme s'arrête.

  7. #7
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Cette erreur peut être générée si la fonction MATCH ne parvient pas à trouver une correspondance à la valeur cherchée.
    Il faut que tu relèves la valeur de C lorsque tu as l’erreur.

    Cordialement.

Discussions similaires

  1. Simplifier tache sur plusieurs onglets
    Par patrick55 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/01/2008, 18h33
  2. Une table répartie sur plusieurs onglets
    Par cdespont dans le forum IHM
    Réponses: 8
    Dernier message: 10/08/2007, 14h20
  3. Macro exécutée sur plusieurs onglets
    Par Aizen64 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/06/2007, 09h59
  4. Export requete sur excel sur plusieur onglets
    Par Renardo dans le forum Access
    Réponses: 10
    Dernier message: 26/01/2007, 17h13
  5. [VBA-E] Impression page paire sur plusieurs onglets
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 17/02/2005, 15h19

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