Répartition automatique des données d'une BASE de DONNÉE dans plusieurs feu

Bonjour à toute la communauté

Serait-il possible de trouver une solution à mon problème à partir d'un code VBA ?

Mon soucis est le suivant: A partir de mon classeur de 4 feuilles nommées respectivement BASE DE DONNEE, Z1, Z2 et Z3

Je voudrais copier les données (NOM et Début de récolte Z1) de ma feuille BASE DE DONNEE et les coller dans les cellules de la feuille Z1 correspondante à fin d'en faire une liste

Ensuite, copier les données (NOM et Début de récolte Z2) de ma feuille BASE DE DONNEE et les coller dans les cellules de la feuille "Z2 correspondante à fin d'en faire une liste

Enfin, copier les données (NOM et Début de récolte Z3) de ma feuille BASE DE DONNEE et les coller dans les cellules de la feuille Z3 correspondante à fin d'en faire une liste.

En d'autres termes, je voudrais répartir de façon automatique les données ("A4:B14") de ma BASE de DONNÉE dans les feuilles Z1, Z2 et Z3 à l'aide d'un code VBA.

Merci d'avance

Voir fichier joint.ce

Bonjour

essayez avec ce code :

Sub test()
Dim TS As ListObject
Dim cel As Range
Dim lig As Integer

Set TS = Sheets("BASE DE DONNEE").ListObjects(1)

For Each cel In TS.ListColumns(1).DataBodyRange
    feuille = cel.Offset(0, 2).Value
    With Sheets(feuille).ListObjects(1)
        If .ListRows.Count = 0 Then
            .ListRows.Add: lig = 1
        Else: .ListRows.Add: lig = .ListRows.Count 'insérer à la dernière ligne
        End If
        With .DataBodyRange
            .Item(lig, 1) = cel.Value
            .Item(lig, 2) = Format(cel.Offset(0, 1), "dd/mm/yyyy")
        End With
    End With
Next cel
End Sub

NB : attention pas de lignes vides dans vos tableaux en feuille Zx. Dans votre fichier posté, veillez donc à d'abord sélectionner la plage B4 à Q6 de chaque feuille, puis click droite --> Supprimer --> "Lignes de tableau" (vous devez voir cette option "Lignes de tableau")
Ensuite exécutez le code.

Si ok et terminé -->

Cordialement

Bonjour à M.Dan.

Je m'excuse de mon absence. J'ai été hospitalisé, mais aujourd'hui ça va un mieux....

Pour le code, j'ai essayé de l'adapter à mon classeur. L 'execution du code s'arrête au niveau de 'feuille =

For Each cel In TS.ListColumns(1).DataBodyRange
feuille = cel.Offset(0, 2).Value
With

et il apparaît " Erreur de compilation"

" Projet ou bibliothèque introuvable"

Nb: sur mon classeur original, il y'a beaucoup de feuilles qui n'ont pas de tableau.

aussi dans les feuilles qui des tableaux, les tableaux sont renommées.

je ne sais pas si c'est à cause de cela.

j'ignore exactement c'est quoi le problème.

sinon, le code marche dans le tableau exemple que j'ai posté, même quand j'ajoute de nouvelles feuilles et de nouvelles colonnes.

Bonjour

Pas de soucis de votre retour tardif. J'espère que vous allez bien

1. Vous ne devez avoir qu'un seul tableau structuré par feuille Zx
2. Vérifier que votre nom "Base de donnée" est bien orthographié (notamment au niveau des espaces ... voir si pas d'espace après le mot donnée...
3. Pas de lignes sans données dans le tableau structuré. dans votre fichier la ligne 14 est vide. Donc bug assuré !
4. Ajoutez cette déclaration de variable en début de code. Désolé je l'avais omise

Dim feuille as string

Le code ne boucle que sur les valeurs mentionnées en colonne C de la feuille Base de donnée donc le nombre de feuille n'a rien avoir. Ce qui compte c'est que le nom de vos feuilles corresponde aux valeurs de la colonne C

L'erreur que vous mentionnez doit venir d'autre chose.
A toutes fins utiles allez dans l'editeur VBA --> menu Outils --> Reference : là vérifiez que vous n'avez pas une référence mentionnée "Manquant...". Si oui, décochez la case.

Refaites un test

Merci bien, le problème est résolu

Rechercher des sujets similaires à "repartition automatique donnees base donnee feu"