XL 2016 Reporter des cellules sélectionnées d'une feuille sur une autre automatiquement

luno123

XLDnaute Occasionnel
Bonjour,

Après un bon début grâce aux aides de lizzmo, bhbh et aussi et surtout Job75 (encore un grand merci), j'aimerais affiner et terminer mon fichier.
Vous verrez qu'à partir des six feuilles (en vert), la feuille "New" s'auto remplie.

Maintenant:

J'aimerais:
1. Je sélectionne des cellules de la feuille New en "remplissant" en vert, manuellement
2. Les cellules précédemment sélectionnées en vert dans New se reporte sur l'onglet "Harmonisation.
3. Les cellules non remplies en vert manuellement sur New auront la mention "à modifier"

Dans mon exemple, on considère que je remplie dans la feuille New, les cellules A2, H2, A17, E17 et F17 en vert.
Cela génère le remplissage automatique sur l'onglet "Harmonisation". Et toutes les cellules restantes de C2 à H65536 de l'onglet Harmonisation seront remplies automatiquement par " à modifier".


Merci d'avance

Luno
 

Pièces jointes

  • PCG 07122022 tableaux vba et 2 Dictionary.xlsm
    160.4 KB · Affichages: 8

job75

XLDnaute Barbatruc
Bonjour luno123, le forum,
Dans mon exemple, on considère que je remplie dans la feuille New, les cellules A2, H2, A17, E17 et F17 en vert.
Ce n'est pas le cas, aucune couleur** dans la feuille "New".

Et s'il faut étudier toutes les couleurs de police de cette feuille cela prendra beaucoup de temps.

**Edit : aucune couleur de police mais il y a des couleurs de fond.

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Bon voyez le fichier joint et cette macro dans le code de la feuille 'Harmonisation" :
VB:
Private Sub Worksheet_Activate()
Dim ncol%, lig&, i&, a, j%
ncol = 8 'nombre de colonnes
lig = 1
Application.ScreenUpdating = False
Rows("2:" & Rows.Count).Delete 'RAZ
With Sheets("New").[A1].CurrentRegion.Resize(, ncol)
    For i = 2 To .Rows.Count
        If .Cells(i, 1).Interior.Color <> vbWhite Then
            lig = lig + 1
            .Rows(i).Copy Cells(lig, 1) 'copier-coller
            a = .Rows(i) 'matrice, plus rapide
            For j = 3 To ncol
                If .Cells(i, j).Interior.Color = vbWhite Then a(1, j) = "A modifier"
            Next j
            Cells(lig, 1).Resize(, ncol) = a 'restitution
        End If
    Next i
End With
End Sub
On ne s'occupe que des couleurs de fond.

On étudie d'abord les couleurs de la colonne A, c'est donc plus rapide.
 

Pièces jointes

  • PCG 07122022(1).xlsm
    166 KB · Affichages: 2
Dernière édition:

luno123

XLDnaute Occasionnel
Bon voyez le fichier joint et cette macro dans le code de la feuille 'Harmonisation" :
VB:
Private Sub Worksheet_Activate()
Dim ncol%, lig&, i&, a, j%
ncol = 8 'nombre de colonnes
lig = 1
Application.ScreenUpdating = False
Rows("2:" & Rows.Count).Delete 'RAZ
With Sheets("New").[A1].CurrentRegion.Resize(, ncol)
    For i = 2 To .Rows.Count
        If .Cells(i, 1).Interior.Color <> vbWhite Then
            lig = lig + 1
            .Rows(i).Copy Cells(lig, 1) 'copier-coller
            a = .Rows(i) 'matrice, plus rapide
            For j = 3 To ncol
                If .Cells(i, j).Interior.Color = vbWhite Then a(1, j) = "A modifier"
            Next j
            Rows(lig) = a 'restitution
        End If
    Next i
End With
End Sub
On ne s'occupe que des couleurs de fond.

On étudie d'abord les couleurs de la colonne A, c'est donc plus rapide.
Merci Job 75 vous êtes top! Heu ... presque.
Une petite correction à votre fichier: Sur New on ne doit pas saisir " à modifier". Je n'ai certainement pas été très clair à mon avis.
Mon souhait:
1. Si dans New, la cellule n'a pas été colorée en vert
2. Sur Harmonisation, la mention " à modifier" doit se mettre automatiquement (cela concerne les cellules C2 à H65536) à une condition: que la colonne A contienne un numéro de compte
 
Dernière édition:

luno123

XLDnaute Occasionnel
Comme indiqué au post #3 j'ai corrigé une erreur au post #3.

Prenez bien le dernier fichier déposé.
Exactement vous avez raison
Sinon j'ai constaté deux petites anomalies:
- Par exemple sur CTD j'ai rajouté le compte 920000000 Hauts de seine et je ne le retrouve pas sur New. La question d'un nouveau compte rajouté pourrait se poser peut être?
- dans New par exemple le compte 164103000 (ligne 33) n'existe que dans l'entreprise DOU . Donc il n'est pas nécessaire que les colonnes des autres entreprises aient la mention " à modifier". Cette mention doit se faire automatiquement sur Harmonisation que s'il existe un libellé différent de celui choisi (coloré en vert). Donc s'il n'y avait pas de libellé, cela veut dire que le compte n'existe pour cette entité. Et si je veux en créer un, je colorerai la cellule vide en vert et dans ce cas, la mention "à créer" apparaitra.
 

Pièces jointes

  • G D PCG 122022.xlsm
    164.9 KB · Affichages: 0

job75

XLDnaute Barbatruc
Sur le fichier (1) dans le code de la feuille "New" j'avais neutralisé la macro avec un End :
VB:
Private Sub Worksheet_Activate(): End
Dans ce fichier (2) je l'ai enlevé.

Mais alors vous constaterez que les couleurs changent tout le temps de position quand on active "New".

C'est à cause du tri final exécuté par la macro...
 

Pièces jointes

  • PCG 07122022(2).xlsm
    166.3 KB · Affichages: 2

job75

XLDnaute Barbatruc
La macro dans la feuille "New" étant activée (voir mon message précédent), si l'on veut éviter les déplacements des couleurs, il faut les lier aux numéros de compte.

Cela peut se faire par Mise en forme conditionnelle (MFC).

Voyez ce fichier (3) et dans la feuille "New" les MFC dans les colonnes A E F H.

Dans la feuille "Harmonisation" la macro étudie les couleurs et les copie en utilisant la propriété DisplayFormat qui existe depuis Excel 2007.
 

Pièces jointes

  • PCG 07122022(3).xlsm
    167.1 KB · Affichages: 6

luno123

XLDnaute Occasionnel
Sur le fichier (1) dans le code de la feuille "New" j'avais neutralisé la macro avec un End :
VB:
Private Sub Worksheet_Activate(): End
Dans ce fichier (2) je l'ai enlevé.

Mais alors vous constaterez que les couleurs changent tout le temps de position quand on active "New".

C'est à cause du tri final exécuté par la macro...
Je suis un peu embêté par le fait que les couleurs changent de position quand j'active New. En fait, je ne sais plus ce que j'ai sélectionné sur New ou pas.
Et une question: pourquoi je n'arrive pas à visualiser ou accéder à la macro? c'est normal?
 

job75

XLDnaute Barbatruc
Je suis un peu embêté par le fait que les couleurs changent de position quand j'active New.
Voyez mon post #10.
Et une question: pourquoi je n'arrive pas à visualiser ou accéder à la macro? c'est normal?
En général les macros évènementielles n'apparaissent pas dans la liste des macros, à cause du Private.

On peut toujours les visualiser en allant dans VBA (Alt+F11).
 

Laurent78

XLDnaute Occasionnel
Bonjour à Tous,

Cette discussion fait-elle suite à une autre ? si oui, laquelle ?

Je regarde cette discussion avec intérêt. Mais je me pose 2 questions :
1.Pourquoi, alors que je ne change rien dans le classeur, le fait de passer de la feuille "Harmonisation" à la feuille "New" et réciproquement, change les éléments de la feuille "Harmonisation" ?
2. J'ai l'impression qu'il s'agit d'harmoniser des intitulés de comptes (comptables) dans différents plan comptables utilisés par des entités juridiques différentes appartenant à même groupe, ou quelque du ce genre, est-ce cela ?

@+
 

Discussions similaires

Statistiques des forums

Discussions
315 091
Messages
2 116 109
Membres
112 662
dernier inscrit
lou75