Report automatique de contenu
Bonjour,
J'espère que vous allez bien.
Je travaille sur un dossier dans lequel je souhaite reporter certaines informations d'un sheet à un autre.
lien du fichier: https://drive.google.com/file/d/17UnIvY5ErrKWcAiFKoDdkFs8E1JtoDkD/view?usp=sharing
Je vous explique:
1) dans le fichier 1 on va saisir certaines informations, si la colonne "Dossiers Choisis" est OUI, je souhaite reporter tous les "oui" dans le fichier 2 et fichier 4. Et si dans le fichier 1 , on change un oui en non ou un non en oui, ca devra se modifier dans les autres fichiers 2 et 4 aussi.
2) Dans le fichier 4, les colonnes F à K ont été remplies grace à un drop listing. Je souhaite reporter ces choix dans le fichier 7 , tableau A_ MISSIONS PROPOSEES AU SEIN DU CABINET
3) Ce qui se trouve dans la colonne D à I du fichier 5, doivent etre reportés dans le fichier 6 de la colonne C à H (pour les memes noms de variables)
4) Les colonnes C à H du fichier 6 avec une faisabilité = OUI(colonne S) , doivent etre reportés dans le fichier 7 tableau B_ MISSIONS A DEVELOPPER
Le coté dynamique est très important, si on modifie la source les reports doivent etre modifiés aussi.
5) Un menu avec des boutons permettant de naviger dans les autres fichiers et de revenir au menu
6) si vous pouvez un design Chic des pages avec la couleur qui se trouve dans la colonne B & C du sheet menu
Pour les tableaux, on peut garder jusqu'à une longueur de 200 lignes
lien du fichier:
https://drive.google.com/file/d/17UnIvY5ErrKWcAiFKoDdkFs8E1JtoDkD/view?usp=sharing
Je vous remercie par avance de votre aide!
Cordialement
Bonjour Mozard,
Vous partagez un fichier ".xlsm" qui ne contient aucun code, alors pourquoi ne pas le donner en ".xlsx"
Ensuite, ce forum d'entraide sur le quel nous sommes tous bénévoles,
n'est pas là pour faire à votre place (vous semblez coutumier du fait)
Vous avez bon nombre de sujets qui traitent votre demande,
mais pour cela il faut effectuer des recherches... peut-être est-ce trop compliqué pour vous
Pour vous mettre sur la piste, utilisez l'évènement Change de la feuille sur laquelle sont apportées les modifications.
A vous de travailler
Merci de votre compréhension
Bonjour BrunoM45
Le fichier était très lourd, j'avais essayé de réduire la taille en enlevant le code VBA (en vain)
un code qui permet de faire des selections multiples.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Oldvalue As String
Dim Newvalue As String
Application.EnableEvents = True
On Error GoTo Exitsub
If Target.Column = 6 Or Target.Column = 7 Or Target.Column = 8 Or Target.Column = 9 Or Target.Column = 10 Or Target.Column = 11 Then
If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then
GoTo Exitsub
Else: If Target.Value = "" Then GoTo Exitsub Else
Application.EnableEvents = False
Newvalue = Target.Value
Application.Undo
Oldvalue = Target.Value
If Oldvalue = "" Then
Target.Value = Newvalue
Else
If InStr(1, Oldvalue, Newvalue) = 0 Then
Target.Value = Oldvalue & ", " & Newvalue
Else:
Target.Value = Oldvalue
End If
End If
End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub
Personnellement, je fais plus de R et de Python dans mon travail. je ne suis pas pro de VBA, c'est pour cela je demande de l'aide. et la plupart de mes demandes sont pour des amis.
Je vous remercie pour ce message salé.
J'ai pu obtenir les valeurs OUI en utilisant la fonction filter d'excel.
pour copier une partie du tableau, j'ai utilisé ce code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim origine As Range, destination As Range
Set origine = ThisWorkbook.Worksheets("4-Missions, tâches effectuées").Range("F6:K6")
Set destination = ThisWorkbook.Worksheets("7-Liste missions du catalogue").Range("D5")
origine.Copy
destination.PasteSpecial xlPasteValues
End Sub
ca me retourne l'erreur 9 pour la ligne Set origine.... l'indice n'appartient pas à la sélection.
mais je ne vois pas cette erreur
Re,
Si votre fichier est trop lourd, c'est qu'il contient des objets masqués ou de nombreuses cellules vides mais existantes pour Excel, il faut donc le nettoyer et "dégraisser" le Mamouth avec cet utilitaire https://forum.excel-pratique.com/s/goto/121537
Sinon pour l'erreur 9, c'est normal si vous double cliquez sur l'onglet "4-", vous avez
4-Missions, tâches effectuées (espace à la fin)
Il faut rectifier le nom
Re,
Merci,
j'avais vu ca. j'ai pu faire et le filtre et le reportage du tableau.
il me reste le design.
Merci beaucoup! c'est mieux en vrai
Bonjour,
J'ai pas mal avancé sur mon fichier,
dans mon dernier sheet
la fonction filtre d'excel me retourne des zéros pour les cellules vides, j'ai donc opté pour la macro
mon filtre marche
mon ClearContents marche
mais au niveau de copier-coller ca me retourne une erreur
Sub copier_coller()
Dim region As String
Dim raw As Worksheet
Dim out As Worksheet
Dim count_col As Integer
Dim count_row As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set raw = ThisWorkbook.Sheets("6-Faisabilité missions")
Set out = ThisWorkbook.Sheets("7-Liste missions du catalogue")
region = "OUI"
'Enlever les données précédentes
out.Range("M8:R54").ClearContents
raw.Activate
'filtrer les données depuis l'origine
raw.Range("D10").AutoFilter field:=17, Criteria1:=region
'determiner la taille du tableau
' count_col = WorksheetFunction.CountA(Range("D9", Range("D9").End(xlToRight)))
count_row = WorksheetFunction.CountA(Range("D9", Range("D9").End(xlDown))) + 8
'Copier coller
raw.Range(Cells(9, 4), Cells(count_row, 9)).SpecialCells(xlCellTypeVisible).Copy
out.Activate
Range("M8").PasteSpecial xlPasteValues
Application.CutCopyMode = False
'Afficher toutes les données et enlever le filtre
With raw
.ShowAllData
.AutoFilterMode = False
End With
End Sub
pouvez-vous me débloquer? seules les colonnes D à I m'intéressent pour la copie
Merci
Bonjour Mozard LOUIS
Effectivement, le fichier à bien avancé
1) concernant les Sub "classiques", il est totalement inutile voir déconseillé de les mettre dans les feuilles.
Une Sub ou une Fonction "classique" doit se mettre dans un module
Dans le feuille on ne met que les Private Sub pour les évènements
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
2) Il faut penser à utiliser les variables objet avec vos Range() et Cells(), il est donc inutile d'activer les feuilles à traiter
Ceci dit, voici le code corrigé :
Sub copier_coller()
Dim region As String
Dim raw As Worksheet
Dim out As Worksheet
Dim count_col As Integer
Dim count_row As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set raw = ThisWorkbook.Sheets("6-Faisabilité missions")
Set out = ThisWorkbook.Sheets("7-Liste missions du catalogue")
region = "OUI"
'Enlever les données précédentes
out.Range("M8:R54").ClearContents
'filtrer les données depuis l'origine
raw.Range("D10").AutoFilter field:=17, Criteria1:=region
'determiner la taille du tableau
' count_col = WorksheetFunction.CountA(Range("D9", Range("D9").End(xlToRight)))
count_row = WorksheetFunction.CountA(raw.Range("D9", raw.Range("D9").End(xlDown))) + 8
'Copier coller
raw.Range(raw.Cells(9, 4), raw.Cells(count_row, 9)).SpecialCells(xlCellTypeVisible).Copy
out.Range("M8").PasteSpecial xlPasteValues
Application.CutCopyMode = False
'Afficher toutes les données et enlever le filtre
With raw
.Range("D10").AutoFilter
.AutoFilterMode = False
End With
End Sub
A+
Bonjour ,
Merci pour la correction ainsi que les conseils.
je mettrai les sub dans modules next time.
A l'évidence je suis un apprenti de VBA, mais j'adore!
j'avais commencé avec
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
mais à chaque clique sur la feuille ca faisait un refresh et buggait, j'ai simplifié avec un boutton.
Merci A+
Re,
VBA permet une infinité de choses
Sinon, quand je lis :
à chaque clique sur la feuille ca faisait un refresh et buggait
A priori c'était plutôt l'évènement "SelectionChange" qui avait été utilisé
Il faut utiliser l'évènement "Change" lors de la modification d'une cellule,
mais ATTENTION il faut désactiver l'évènement le temps de traitement, sinon ça tourne en boucle et fini par faire cracher Excel
A+
justement ca tournait en boucle , j'y était presque alors.
Qu'est-ce que tu entnds par désactiver pour le traitement?