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 :

MAJ Macro tableau onglet principal avec les tableaux secondaires des autres onglets


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut MAJ Macro tableau onglet principal avec les tableaux secondaires des autres onglets
    Bonjour à tous!

    Voilà je vous explique mon problème.

    J'ai un tableau global, récapitulatif (onglet "DTB WORLD") qui regroupe toutes les lignes des tableaux des autres onglets concernant différent pays ("DTB FRANCE", "DTB GERMANY"...).

    Je souhaiterais, par l'intermédiaire d'une macro et en actionnant un bouton que lorsque je modifie et ajoute des lignes aux tableaux de chaque pays elles s'ajoutent à la suite des précédentes de ce même pays dans le tableaux de l'onglet "DTB WORLD"
    Il ne faudrait en revanche pas prendre en compte la dernière ligne TOTAL de chaque tableau de pays.
    Il faudrait également que lors de l'ajout des nouvelles lignes au "DTB WORLD" la dernière ligne TOTAL prennent en compte ces nouvelles lignes et les sommes incluses dans les nouvelles cellules.
    Pour essayer d'être plus clair, si je rajoute des lignes de données dans "DTB GERMANY" je souhaiterais qu'elles s'ajoutent dans "DTB WORLD" à la suite des anciennes lignes notées GERMANY (de la colonne A). Et de même pour chaque pays. Il ne faut pas que tout s'ajoute en vrac à la fin de "DTB WORLD"

    Voilà ça c'est le gros de mon problème car je n'y connais à vrai dire rien en Macro. Je suis un peu mac la débrouille avec les formules mais les Macro c'est une autre affaire... c'est pourquoi je fais appel à vous les experts de cet outil incroyable qu'est Excel ;-)

    *

    J'ai aussi un deuxième soucis mais nettement moins prioritaire:
    Les onglets des pays sont "mis à jour", compléter à la mains en copier coller depuis des extractions de BDD. Seulement voilà à chaque extraction j'ai aussi toutes lignes déjà présentes dans mes onglets pays + les nouvelles, et certaines des lignes qui étaient dans les onglets pays ont changées (date de clôture, attribuated turnover...). Tout ce que j'ai pu faire pour le moment c'est faire une mise en forme conditionnelle sur les 2 premières colonnes m'indiquant les doublons en N° AO ou en Designation AO. Après je supprime à la main les anciens doublons (anciennes lignes) 1 par 1.
    Serait-il possible à l'aide d'une Macro et d'un bouton de rendre ce processus automatique: Lorsque qu'un doublon de N°AO est détecter, supprimer la ligne la plus ancienne et conserver la nouvelle.

    Je vous remercie d'avance pour votre aide précieuse :-), j'espère ne pas trop en demander :-/
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour Tesla.B,

    Un petit truc rapide fait sur le pouce :
    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
    Option Explicit
     
    Sub maj()
    Dim oRng As Range
    Dim oWksh As Worksheet
     
    With Worksheets("DTB WORLD")
        Set oRng = .Cells(Rows.Count, 1).End(xlUp)
        .Rows("2:" & oRng.Offset(-1, 0).Row).Delete
    End With
     
    For Each oWksh In Worksheets
        If oWksh.Name <> "DTB WORLD" And oWksh.Range("A1") = "N° AO" Then
            With oWksh
                Set oRng = .Cells(Rows.Count, 1).End(xlUp)
                .Rows("2:" & oRng.Row - 1).Copy
                Worksheets("DTB WORLD").Rows("2:" & oRng.Row - 1).Insert Shift:=xlDown
            End With
        End If
    Next oWksh
     
    With Worksheets("DTB WORLD")
        Set oRng = .Cells(Rows.Count, 7).End(xlUp)
        oRng.FormulaLocal = "=SOMME(G2:G" & oRng.Row - 1 & ")"
        oRng.Offset(0, 1).FormulaLocal = "=SOMME(H2:H" & oRng.Row - 1 & ")"
        oRng.Offset(0, 2).FormulaLocal = "=SOMME(I2:I" & oRng.Row - 1 & ")"
    End With
     
     
    End Sub
    Tes critiques permettront d'élaborer quelque chose qui te permettrait d'accéder à ce que tu souhaites.

    N'hésite pas à revenir vers moi !

    Cordialement,
    Kimy

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Tout d'abord merci beaucoup Kimy_Ire pour ta réactivité et ta macro :-)

    Elle exécute en effet la MAJ pour DTB WORLD sans mélanger les pays, ça c'est top!

    En revanche en ajoutant des lignes dans les onglets pays j'ai perdu la dernière ligne dans DTB WORLD, la ligne TOTAL. J'ai toujours les formules de sommes dans les collonnes G, H, I et M mais j'ai perdu la dénomination de ma ligne TOTAL.

    En exécutant la macro (peut-être que je l'exécute mal c'est probable), je perds également l'intitulé de mes colonnes dans DTB WORLD.

    Dernier élément, l'ordre de toutes les lignes est inversé? La première ligne de DTB FRANCE (qui doit être la première de DTB WORLD) est dernière et la dernière de DTB MIDDLE-EAST (qui devrait être la dernière de DTB WORLD) est la première?
    Peut-être qu'il y a des réglages à faire, mais si c'est le cas je ne sais pas lequels.

    Mais déjà merci, ça fait le gros du boulot compliqué (même si je ne comprends rien au contenu de la macro pour le moment, chose sur laquelle je vais me pencher). Si tu as des solutions à mes constatations je suis preneur :-)

    Merci d'avance encore une fois!

    J'ai trouvé comment mettre dans l'ordre des onglet. J'ai changer la position des onglets.
    Par contre pour la dernière ligne je n'ai pas encore trouvé.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Tesla.B Voir le message
    J'ai aussi un deuxième soucis mais nettement moins prioritaire:
    Les onglets des pays sont "mis à jour", compléter à la mains en copier coller depuis des extractions de BDD. Seulement voilà à chaque extraction j'ai aussi toutes lignes déjà présentes dans mes onglets pays + les nouvelles, et certaines des lignes qui étaient dans les onglets pays ont changées (date de clôture, attribuated turnover...). Tout ce que j'ai pu faire pour le moment c'est faire une mise en forme conditionnelle sur les 2 premières colonnes m'indiquant les doublons en N° AO ou en Designation AO. Après je supprime à la main les anciens doublons (anciennes lignes) 1 par 1.
    Serait-il possible à l'aide d'une Macro et d'un bouton de rendre ce processus automatique: Lorsque qu'un doublon de N°AO est détecter, supprimer la ligne la plus ancienne et conserver la nouvelle.

    Je vous remercie d'avance pour votre aide précieuse :-), j'espère ne pas trop en demander :-/
    Si tu avais aussi une sollution pour mon second problème ce serait parfait :-) Je sais que j'en demande beaucoup mais se mettre brute de fonderie à Excel c'est pas évident et encore moins aux macros...
    J'ai consulter plusieurs topics sur le forum (comme celui-ci par exemple: http://www.developpez.net/forums/d13...n/#post7154257) le problème c'est que je ne comprends rien à la macro :-/
    Merci d'avance :-)

  5. #5
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour Telsa.B,

    Peu de temps à te consacrer...
    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
    Option Explicit
     
    Sub maj()
    'Set les variables
    Dim oRng As Range
    Dim oWksh As Worksheet
     
    'Avec la feuille "DTB WORLD"
    With Worksheets("DTB WORLD")
        'set "oRng" sur la dernière ligne non vide de la colonne 1
        Set oRng = .Cells(Rows.Count, 1).End(xlUp)
        'de la ligne 2 à la ligne de "oRng" -1 (c'est-à-dire l'avant-dernière ligne) on supprime toutes les lignes
        .Rows("2:" & oRng.Offset(-1, 0).Row).Delete
    End With
     
    'Pour chaque onglet du classeur
    For Each oWksh In Worksheets
        'Si son nom et différent de "DTB WORLD" et que cet onglet a en "A1" la valeur "N° AO" alors...
        If oWksh.Name <> "DTB WORLD" And oWksh.Range("A1") = "N° AO" Then
            '... on utilise cet onglet.
            With oWksh
                'On set oRng sur la dernière ligne non-vide de la colonne 1
                Set oRng = .Cells(Rows.Count, 1).End(xlUp)
                'on copie de la ligne 2 à l'avant-dernière ligne
                .Rows("2:" & oRng.Row - 1).Copy
                'et on colle en insérant dans l'onglet "DTB WORLD"
                Worksheets("DTB WORLD").Rows("2:" & oRng.Row - 1).Insert Shift:=xlDown
            End With
        End If
    Next oWksh
     
    'Avec l'onglet "DTB WORLD"
    With Worksheets("DTB WORLD")
        'On cherche la dernière ligne non-vide de la colonne 7.
        Set oRng = .Cells(Rows.Count, 7).End(xlUp)
        'et on réinsère les formules (qui ont disparues lors de la suppression initiale)
        oRng.FormulaLocal = "=SOMME(G2:G" & oRng.Row - 1 & ")"
        oRng.Offset(0, 1).FormulaLocal = "=SOMME(H2:H" & oRng.Row - 1 & ")"
        oRng.Offset(0, 2).FormulaLocal = "=SOMME(I2:I" & oRng.Row - 1 & ")"
    End With
     
    End Sub
    Je t'ajoute les commentaires en espérant que ça puisse te servir.
    Je reviens dès que possible.

    Cordialement,
    Kimy

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Super! merci pour les commentaires, je pense que je vais déjà mieux comprendre oui :-)

    T'inquiète je comprends il n'y a pas que moi ^^.
    En attendant que tu soit dispo de toute manière 1. J'essai de piger la macro 2. Je tente des trucs (plus ou moins foireux ;-) )

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Tesla.B Voir le message
    J'ai trouvé comment mettre dans l'ordre des onglet. J'ai changer la position des onglets.
    Par contre pour la dernière ligne je n'ai pas encore trouvé.
    J'ai trouvé la solution pour la dernière ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Worksheets("DTB WORLD")
        Set oRng = .Cells(Rows.Count, 1).End(xlUp)
        .Rows("2:" & oRng.Offset(-4, 0).Row).Delete
    End With
    En revanche pour mon second problème (du début)... toujours pas mais je ne désespère pas, je tente, je tente, il se passe des trucs pas les bons mais il se passent des trucs (parfois étranges, souvent inattendus mais toujours intéressant ^^), euh sans macro cela va de soit parce que même si j'ai compris en partie, grâce aux commentaires, ta macro, je reste incapable d'en faire une. Au passage j'espère que le WE du 1er Mai a été bon Kimy_Ire!

Discussions similaires

  1. problemes avec les tableaux et macros
    Par Aniss00 dans le forum C
    Réponses: 4
    Dernier message: 15/10/2014, 20h53
  2. [WD-2010] Travail avec les tableaux créés par macro
    Par Claude_Azoulai dans le forum VBA Word
    Réponses: 2
    Dernier message: 16/02/2013, 16h58
  3. [Débutant] Problèmes avec les tableaux.
    Par Lwq dans le forum C++
    Réponses: 6
    Dernier message: 01/11/2005, 13h54
  4. [vb excel]Aide avec les tableaux
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/09/2005, 13h07

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