VBA qui crée des tableaux en fonction d'une liste de données

Résolu
Dreampower75 Messages postés 91 Statut Membre -  
Dreampower75 Messages postés 91 Statut Membre -
Bonjour,

Est-il possible d'obtenir une programmation VBA qui crée des tableaux en fonctions d'une liste de données (22001ATU1...)?

Les tableaux sont à crées dans l'onglet " détail des heures " selon le même modèle que les tableaux existants en fonction du nombre de données (22001ATU1...) situées en colonne A de l'onglet "PFA 01 2022"

=> chaque nouveau tableau de l'onglet "détail des heures" crée doit être mis à jour en colonne A avec les données de la colonne A de l'onglet "PFA 01 2022"

=> Sachant que la liste de données en colonne A de l'onglet "PFA 01 2022" peut être plus importante ou moins importante (elle peut se terminer en ligne 25, 30, ou 45)

=> Par conséquent : si il y a 8 données en colonne A de l'onglet "PFA 01 2022" => il doit y avoir 8 tableaux dans l'onglet " détail des heures "
si il y a 12 données en colonne A de l'onglet "PFA 01 2022" => il doit y avoir 12 tableaux dans l'onglet " détail des heures "

Le lien a été crée avec un fichier illustratif : https://www.cjoint.com/c/LCkjvFP84GO





Merci beaucoup pour votre aide.

Cordialement.

Configuration: Windows / Chrome 99.0.4844.51

2 réponses

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    Bonjour,

    Contrairement à beaucoup qui s'offusquent quand un demandeur poste dans plusieurs forums, cela ne me dérange pas.
    En revanche, je ne trouverais sympa que le même demandeur, quand il a eu une solution ailleurs, la propose ici pour deux raisons :
    1. Pour faire bénéficier d'autres personnes qui auraient le même genre de problème.
    2. Pour éviter de faire perdre du temps aux personnes qui pourraient lui venir en aide...

    Voilà, Onyirimba/Dreampower75
    1
  2. Dreampower75 Messages postés 91 Statut Membre 2
     
    Bonjour,
    Ok c'est noté
    j'ai eu une solution ci-après :

    merci de votre aide Forum

    Sub Macro1()
    Dim OM As Worksheet 'déclare la variable OM (Onglet Modèle)
    Dim OP As Worksheet 'déclare la variable OP (Onglet PFA 01 2022)
    Dim OD As Worksheet 'déclare la variable OD (Onglet Détail des heures)
    Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
    Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
    Dim PL As Range 'déclare la variable PL (PLage)
    Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

    Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
    Set OM = Worksheets("Modèle") 'définit l'onglet OM
    Set PL = OM.Range("A8:K19") 'définit la plage PL
    Set OP = Worksheets("PFA 01 2022") 'définit l'onglet OP
    DL = OP.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet OP
    Set OD = Worksheets("Détail des heures") 'définit l'onglet OD
    OD.Rows(8 & ":" & Application.Rows.Count).Delete 'efface les anciennes données de l'onglet OD
    TV = OP.Range(OP.Cells(17, "A"), OP.Cells(DL, "A")) 'définit le tableau des valeurs TV
    Set DEST = OD.Range("A8") 'initialise la cellule de destination DEST
    For I = 1 To UBound(TV, 1) 'boucle sur toutes les ligne I du tableau des valeurs
    PL.Copy DEST 'copie la plage PL dans la cellule de destination DEST
    DEST.Resize(11, 1).Value = TV(I, 1) 'copie la donnée ligne I colonne 1 de TV dans la cellue de destination DEST redimensionnée

    Set DEST = DEST.Offset(13, 0) 'redéfinit la cellule de destination DEST

    If TV(I, 1) = "" Then
    Exit For
    End If

    Next I 'prochaine ligne de la boucle
    Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
    OD.Activate 'active l'onglet OD
    MsgBox "Boards are completed !" 'message
    End Sub
    0