VBA qui crée des tableaux en fonction d'une liste de données
Résolu
Dreampower75
Messages postés
88
Date d'inscription
Statut
Membre
Dernière intervention
-
Dreampower75 Messages postés 88 Date d'inscription Statut Membre Dernière intervention -
Dreampower75 Messages postés 88 Date d'inscription Statut Membre Dernière intervention -
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.
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
A voir également:
- VBA qui crée des tableaux en fonction d'une liste de données
- Liste déroulante excel - Guide
- Fonction si et - Guide
- Cree un compte google - Guide
- Liste déroulante en cascade - Guide
- Créer un lien pour partager des photos - Guide
2 réponses
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
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
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
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