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.

Re,

Pour info, après nettoyage correcte du classeur

image

Je pense que vous avez un souci avec le fichier original

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

4catalogue.xlsm (186.80 Ko)

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?

Rechercher des sujets similaires à "report automatique contenu"