Copier données d'un tableau vers un autre tableau (sous conditions)

Bonjour,

Je souhaiterai obtenir de l'aide pour réaliser une macro. N'étant pas expert, pourriez-vous m'aider s'il vous plait. Je n'ai pas trouver de réponse à ma questions dans le forum.

J'utilise actuellement un fichier qui contient 2 feuilles (tableau de bord, classe). Les feuilles école et garderie contiennent chacune un tableau qui sera rempli au fur et à mesure. les données de la feuille classe sont rempli dan un tableau.

Je souhaiterai copier les données "sujet" "responsabilités" et "planification" dans un autre tableau qui se trouve dans la feuille "Tableau de bord" uniquement SI le sujet en question a comme statut "En cours".

Je souhaiterai en faites créer une macro qui va lire les données de la feuille "Classe" et copier certaines valeurs dans la feuille "Tableau de bord" (dans un autre tableau) avec la condition expliquée précédemment.

En pièce jointe, vous trouverez mon modèle.

Merci,

Valéry

31test.xlsx (25.77 Ko)

Bonsoir,

Quelle est la version d'excel utilisée ?

Cordialement

Bonjour Valéry CCS et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum

Merci de votre participation

Cordialement

Bonjour

Bonjour à tous

Un essai à tester. Te convient-il ?

16test-v1.xlsm (38.42 Ko)
Option Explicit

Dim tablo, tabloR(), f As Worksheet
Dim i&, k&, derln&

Sub MettreAjour()

    Set f = Sheets("CLASSE")
    tablo = f.Range("Tableau6")
    ReDim tabloR(1 To UBound(tablo, 1), 1 To 3)
    k = 0
    For i = 1 To UBound(tablo, 1)
        If tablo(i, 1) = "" Then
            Exit For
        ElseIf tablo(i, 7) = "En cours" Then
            tabloR(k + 1, 1) = tablo(i, 1)
            tabloR(k + 1, 2) = tablo(i, 2)
            tabloR(k + 1, 3) = tablo(i, 3)
            k = k + 1
        End If
    Next i
    If tablo(1, 1) <> "" Then
        Range("Tableau10").ClearContents
        Range("B15").Resize(k, 3) = tabloR
    End If
End Sub

Bye !

Bonjour,
Une proposition Power Query.
Cdlt.

23test.xlsx (32.24 Ko)

Bonjour Valéry, le fil

Ou tout simplement

Sub MiseAJour()
  Dim NbLig As Long
  With Sheets("CLASSE")
    With .ListObjects("Tableau6")
      NbLig = .DataBodyRange.Rows.Count
      .Range.AutoFilter Field:=7, Criteria1:="En cours"
    End With
    ' Copier les lignes filtrées
    .Range("Tableau6[[#Headers],[SUJET]]").Offset(1, 0).Resize(NbLig, 3).Copy
    ' les Coller
    Sheets("Tableau de bord").Range("B15").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
      SkipBlanks:=False, Transpose:=False
    ' Effacer le filtre
    .ListObjects("Tableau6").Range.AutoFilter
  End With
End Sub

A+

Bonjour,

Merci à tous. pour vos exemple.

j'ai testé la méthode de GMB. Si je rajoute des données dans le tableau à la suite, celles-ci ne sont pas prise en compte.

Celle de BrunoM45 me semble aussi fonctionnelle mais je n'en suis pas sur car je ne maitrise pas le code.

J'ai aussi testé la méthode de Jean Eric qui fonctionne. Je souhaiterai savoir s'il est possible de faire la même chose avec 2 tableaux. J'ai rajouté une feuille Garderie ou les données devront aussi être copiées dans le tableau correspondant dans le dashboard. Peux tu m'aider à faire de même ^pour le second tableau, s'il te plait? Cela m'aidera à comprendre ce que tu as fait.

Merci,

Bonne soirée.

10test-1.xlsx (36.87 Ko)

Bonjour

j'ai testé la méthode de GMB. Si je rajoute des données dans le tableau à la suite, celles-ci ne sont pas prise en compte.

C’est curieux, j’ai fait le même essai (en vérifiant bien qu’il y avait «En cours » en colonne G) et le résultat a été correct…

Nouvelle version pour les 2 tableaux :

11test-1-v2.xlsm (49.83 Ko)

Bye !

Bonjour,
La mise à jour Power Query avec une actualisation auto. (VBA).
Cdlt.

31test-1-v3.xlsm (43.52 Ko)

Bonjour,

Merci et désolé de répondre tardivement.
J'ai vu et effectivement cela fonctionne. Cependant, il se trouve que j'ai une autre contrainte que j'ai oublié de mentionner.
Je souhaiterai savoir s'il y a un moyen de le faire tourner sur Teams ou s'il y a une autre solution, s'il vous plait?

Merci,

Val

Bonjour,

J'ai réussi à reproduire la méthode avec power query mais le résultat s'affiche dans une nouvelle feuille. Or je souhaite que ça soit dans la première feuille. Je ne sais pas comment faire. Pouvez-vous m'aider s'il vous plait?

J'ai l'impression qu'il y a une connexion mais je ne parviens pas à le faire pour que ca s'affiche dans un des 2 tableaux qui se trouve dans la feuille tableau de bord.

Cordialement,

Val

Bonjour,
Joins ton classeur avec des explications.
Cdlt.

Bonjour,

Merci,

J'ai enfin compris le fonctionnement. En effet, il s'agissait d'un problème de connexion à un tableau.

Aussi, j'ai essayé de le visualiser dans Teams mais j'ai constaté que les requêtes ne fonctionnait pas. Du coup il faut ouvrir le fichier en local, faire l'actualisation et recharger dans Teams. Savez-vous s'il y a une solution pour que ça fonctionne automatiquement dans Teams?

Cordialement,

Val

Rechercher des sujets similaires à "copier donnees tableau conditions"