Résolu XL 2019 Ventilation de données vers plusieurs feuilles à partir d'une feuille-source

DJISA

XLDnaute Occasionnel
Je voudrais ventiler les données qui se trouvent dans la feuille "idconel" vers les autres feuilles qui seront créées par une boucle. La sélection des feuilles se fera à partir de la derniere colonne de la feuille "idconel". Dans cette colonne figurent le noms des feuilles vers lesquelles les données doivent être ventilées.
L'idée ici est à chaque fois qu'une nouvelle donnée est enregistrée dans la feuille "idconel", ici la feuille-source, qu'on efface les données déjà ventilées avant faire faire un nouveau collage pour assurer la mise à jour.
Pour celà nous avons réalisé le code ci-dessous mais le problème est que non seulement les données ne sont pas ventilées la feuille source "idconel" s'effacent.
Ci-joint le fichier
VB:
Dim j As Integer
Dim Lastrow As Integer
Dim DerniereLigne As Integer
Sub ventilation()
Application.ScreenUpdating = False

For j = 5 To 7
Sheets(j).Select
Lastrow = Range("C2000").End(xlUp).Row
For i = Lastrow To 5 Step -1
Sheets(j).Select
Rows(i).Select
Selection.Delete Shift:=xlUp
Next i
Sheets("idconel").Select
DerniereLigne = Range("C2000").End(xlUp).Row
For k = 5 To DerniereLigne
Sheets("idconel").Select
If Sheets(j).Name = Cells(k, 15).Value Then
Rows(k).Select
Selection.Copy
Sheets(j).Select
Lastrow = Range("C2000").End(xlUp).Row + 1
Cells(Lastrow, 1).Select
ActiveSheet.Paste

End If
Next k
Next j
Sheets("idconel").Select
Application.CutCopyMode = False
Application.ScreenUpdating = True
Merci
DJISA
 
Ce fil a été résolu! Aller à la solution…

Fichiers joints

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Djisa,
Que les données s'effacent c'est normal. Ça prouve que la première partie marche.
Ensuite j'ai un sérieux doute.
VB:
If Sheets(j).Name = Cells(k, 15).Value Then
Pour moi la 15ème colonne c'est Dossier.
Etes vous sur de la cellule où aller chercher le nom de la feuille ?
Pour moi ce serait plutôt la colonne 17 qui est classe.
N'avez vous pas confondu le N° ligne dans le tableau et le N° ligne dans la feuille ?
 

GALOUGALOU

XLDnaute Impliqué
bonjour djisa bonjour le forum
je ne suis pas en capacité d'analyser le code présenté dans le post1, qui sera beaucoup mieux évalué par les membres du forum

j'ai trouvé intéressant de réfléchir sur votre classeur et je me suis laissé inspiré par une approche différente. je vous laisse évaluer

dans les feuilles 6a 5b 3a une macro dans évenement feuille qui se déclenche a l'activation de la feuille
la conséquence, mise à jour de la base de données uniquement sur la feuille consultée.
(pour verifier effacer les données d'une feuille (ou rajouter une ligne d'écriture dans la feuille source))

si cette approche vous intéresse , il faudra à chaque création d'un nouvel onglet concerné par la même présentation, mettre dans événement feuille le code ci dessous.

Private Sub Worksheet_Activate()
Call ventilation33
End Sub
cordialement
galougalou
 

Fichiers joints

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

=>DJISA
A force de ventiler, tu ventiles même ta politesse :rolleyes:
3 – Lorsqu’on rentre sur un fil, comme dans la vie de tous les jours, on est poli en disant « Bonjour ».
Sinon cette question a été traitée au moins 113 fois (dont 7 des nuits sans lune)
Voir dans les archives du forum
[ ou dans les Discussions similaires (à droite de l'écran) ]
 

DJISA

XLDnaute Occasionnel
Salut Stapple, le Forum!
Toutes nos excuses pour n'avoir pas salué.
Mais nous attendons toujours une solution à notre problème. J'ai fouillé dans les sujets identiques au mien mais en vain.
Pour ceux là qui tenteraient d'apporter leur soutien je précise que le nombre d'onglets est aléatoire et dépend seulement des besoins de l'utilisateur.
Merci
DJISA
 

GALOUGALOU

XLDnaute Impliqué
bonsoir djisa bonsoir le forum
je ne sais pas si vous avez évaluer le classeur dans le post 3 mais le nombre d'onglet pouvant être mis en service est infini, il suffit d'ajouter la macro évenement feuille qui existe actuellement dans 6a 5b 3a.
c'est le fait d'activer la feuille qui actualisera les données dans la feuille choisie.
cordialement
galougalou
 

GALOUGALOU

XLDnaute Impliqué
j'oubliais de préciser la quantité de ligne de la feuille idconel est infinie aussi, la seule contrainte est de bien renseigner la colonne Q avec un nom identique à l'onglet
@+
 

DJISA

XLDnaute Occasionnel
Salut GALOUGALOU, le Forum!
Pouvez-vous être plus concret, s'il vous plait? Mes connaissances en VBA son limitées.
Merci
DJISA
 

GALOUGALOU

XLDnaute Impliqué
oui oui
dans le classeur en fichier joint si vous modifiez les informations de la feuille source idconel, en activant la feuille que vous voulez consulté (en cliquant dessus), vous allez avoir une mise à jour immédiate.

supposons que vous souhaitiez créer d'autre fiche, vous faites clic droit sur un onglet fonctionnel (exemple 6A et vous choisissez déplacer ou copier / vous cochez creer un copie / ok
l'onglet est maintenant fonctionnel avec la macro intégrée, avec clic droit vous le renommer par exemple 4D
dans l'onglet idconel en colonne Q toutes les lignes qui seront renseignés avec le nom de l'onglet 4d seront massifié dans l'onglet 4D
et il n'y pas de limitation aux nombres d'onglets.

la seule contrainte c'est que la saisie colonne Q de l'onglet idconel doit être totalement identique a la virgule près (et à la casse), au nom de l'onglet de destination.
l'onglet idconel étant integré à la macro, ne pas modifier son nom.
si je n'ai pas été suffisamment clair n’hésiter pas à me demander des précisions.
@+
 

DJISA

XLDnaute Occasionnel
Bonjou GALOUGALOU Le forum!
Merci pour ta proposition. Cela fonctionne. Mais là je serai contraint à des modifications à l'ajout d'une nouvelle classe. Je voudrais si possible un code qui s'adapte à toute les situation sans qu'on soit obligé de modifier.
Ailleurs on m'a proposé ce code qui marche mais avec la même contrainte de modification.
Ne peut-on pas utiliser <> à la place de= dans cette ligne: If Sheets(j).Name = "6A" Or Sheets(j).Name = "5B" Or Sheets(j).Name = "3A" Or Sheets(j).Name = "3B" Then pour exclure les feuilles "cfg", "TDB", "Maquette", "idconel" sachant que ce sont les seules feuilles vers lesquelles des données ne seront pas ventilées. j'ai essayé ceci mais ça ne marche pas: If Sheets(j).Name <> "cfg" Or Sheets(j).Name <> "TDB" Or Sheets(j).Name <> "Maquette" Or Sheets(j).Name <> "idconel" Then...
VB:
Dim i As Long, j As Long
Dim DerLig_f1 As Long, DerLig_f2 As Long
 
Sub Ventilation()
    Application.ScreenUpdating = False
    Set f1 = Sheets("idconel")
    DerLig_f1 = f1.Range("C" & Rows.Count).End(xlUp).Row
    For j = 1 To 8
        If Sheets(j).Name = "6A" Or Sheets(j).Name = "5B" Or Sheets(j).Name = "3A" Or Sheets(j).Name = "3B" Then
            Set f2 = Sheets(Sheets(j).Name)
            DerLig_f2 = f2.Range("C" & Rows.Count).End(xlUp).Row
            f2.Range("C5:R" & DerLig_f2).Clear
            DerLig_f2 = 5
            For i = DerLig_f1 To 5 Step -1
                If f1.Cells(i, "R").Value = Sheets(j).Name Then
                    f1.Range(Cells(i, "C"), Cells(i, "R")).Copy f2.Range("C" & DerLig_f2)
                    DerLig_f2 = DerLig_f2 + 1
                End If
            Next i
        End If
    Next j
    f1.Select
End Sub
Merci
DJISA
 

Fichiers joints

GALOUGALOU

XLDnaute Impliqué
Bonjour le forum._Bonjour djisa
Je ne suis pas en ligne aujourd'hui, je regarde ce soir. Mais simplement dans mon classeur Il n'y a pas besoin de modifier le code vba Quand vous ajouter des classes et vous pouvez en ajouter un nombre illimité sans modification
cordialement
galougalou
 

DJISA

XLDnaute Occasionnel
Bonjour galougalou, le forum!
Pouvez-vous me renvoyer votre classeur quand vous serez disponible. J'ai essayé de le rouvrir mais le fichier est corrompu.
Merci
DJISA
 

GALOUGALOU

XLDnaute Impliqué
Je ne suis pas devant mon ordi. Je vous le depose ce soir. Je vais aussi vous preparer un classeur (pour demain) qui repondra a vos problematiques. Cordialement galougalou
 

GALOUGALOU

XLDnaute Impliqué
bonjour djisa bonjour le forum
dans la page d'accueil un bouton tuto explique le fonctionnement du classeur
le classeur ne comporte que 3 onglets mais est fonctionnel pour un nombre illimité de classe.
la création d'une nouvelle fiche est automatique sans aucune intervention de l'opérateur.
possibilité de sauvegarder en pdf soit la totalité des bordereaux classes, soit une fiche individuelle. (le nom de la classe est posé automatiquement sur le nom du fichier crée)
la sauvegarde écrase le fichier pdf précédent

très important, créer un dossier pour loger le classeur excel.

cordialement
galougalou
 
Ce message a été identifié comme étant une solution!

Fichiers joints

DJISA

XLDnaute Occasionnel
Salut galougalou, Le Forum!
Un grand merci pour le travail effectué. Surtout tu es allé plus loin que moi. J'avais pas cette conception au départ mais je crois que cela me va bien.
DJISA
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas