XL 2013 Mise en forme, insertion et récupération de cellules automatique (macro)

mactoche

XLDnaute Nouveau
Bonjour à tous

Tout nouvel inscrit sur le forum que je parcours depuis un petit moment lorsque je commence a bloquer sur excel.

Je me trouve aujourd'hui a vouloir semi-automatiser un process d'exportation de 2 applications sous forme de feuille excel pour une meilleur lecture.

Voici mon problème (fichier joint)

J'ai 3 feuilles dans mon classeur :
Feuille1 (User) récupère mes utilisateurs avec leurs rôles complexes
Feuille2 (Rôles) récupère les rôles complexes qui englobes des rôles simple, qui englobes eux mêmes des codes

Je cherche tout simplement a récupérer le détail de chaque rôles complexes attribués aux utilisateurs afin d'avoir un tableau clair et lisible

Sur la Feuille3 (Résultat) c'est le résultat souhaité

Merci d'avance pour vos réponses
Christophe
 

Fichiers joints

mactoche

XLDnaute Nouveau
super merci François

si je veux faire dans modifications dans la macro je fais comment ?

@+ Christophe
 

mactoche

XLDnaute Nouveau
en faite si je souhaites modifier les données dans les rôles complexes la macro ne fonctionne pas, dans résultat elle m'efface les rôles complexes que j'ai modifié, en PJ pour exemple : j'ai changé le rôle ZX44-22ACV par XXX et il ne s'affiche plus.
 

Fichiers joints

fanfan38

XLDnaute Accro
Alors... ça se passe là:
Select Case Sheets("Résultat").Cells(ligResultat, 4).Value
Case Is = "ZS77XACT"
[ZS77XACT].Copy Destination:=Sheets("Résultat").Range("E" & ligResultat)
Case Is = "ZSXC210-X"
[ZSXC210_X].Copy Destination:=Sheets("Résultat").Range("E" & ligResultat)
Case Is = "ZSAQ-WW12"
[ZZSAQ_WW12].Copy Destination:=Sheets("Résultat").Range("E" & ligResultat)
Case Is = "ZERTCC-VV"
[ZERTCC_VV].Copy Destination:=Sheets("Résultat").Range("E" & ligResultat)
Case Is = "ZX44-22ACV"
[ZX44_22ACV].Copy Destination:=Sheets("Résultat").Range("E" & ligResultat)
End Select

explication: quand tu es sur la page "Rôles" tu clic sur l'onglet Formules en haut
ensuite tu choisis "gestionnaire de noms" (a peu près au milieu)
Là tu vois que j'ai nommé les cellules qui correspondent au rôle complex (attention le tiret"-" n'est pas accepté)
donc si tu veux créer un rôle complex "xxx" tu sélectionnes sur cette feuille les rôle individuel et les codes correspondant et tu les nommes dans le gestionnaire de noms...
ensuite tu ajoutes dans la macro (avant end select)
case is="xxx"
[le nom que tu as choisis pour ces cellules].copy Destination:=Sheets("Résultat").Range("E" & ligResultat)

J'espère avoir été clair
A+ François
 

mactoche

XLDnaute Nouveau
tu as été très clair

je vais tester ça... j'imagine que c'est personnalisable ? Du style rajouter une colonne "Désignation de rôle" en l'incluant dans le gestionnaire de noms ?

Merci encore
Christophe
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Autre solution ne nécessitant pas de retouche de macro ni de noms.
Exécution par activation de Feuil3 (Résultat)
Pièce joint supprimée, voir poste #11
 
Dernière édition:

mactoche

XLDnaute Nouveau
Merci @Dranreb et du coup ça fonctionne comment ?

Si je modifie un rôle la feuille résultat la cellule perd la présentation alignement et bordure

Si je modifie toutes les données ça va fonctionner aussi ?

Merci
 

Dranreb

XLDnaute Barbatruc
La feuille Résultat est entièrement refaite lorsqu'on l'active, à partir des autres feuilles.
 

mactoche

XLDnaute Nouveau
Ah ouais c'est magnifique, merci @Dranreb
Et comment je fais si je veux rajouter des colonnes "Désignations" dans la feuille "Roles" et qu'elle s'importe aux "Résultats" ?

Merci
Christophe
 

mactoche

XLDnaute Nouveau
Ah je n'y arrive pas, j'ai localisé les cellules :
VB:
Set UR = Feuil1.[B2:D2].Resize(Feuil1.[D1000000].End(xlUp).Row - 1)
pour y rajouter une colonne modifié en :
Code:
Set UR = Feuil1.[B2:E2].Resize(Feuil1.[D1000000].End(xlUp).Row - 1)
Mais ça ne fonctionne pas
 

Dranreb

XLDnaute Barbatruc
Ah non, ce s'est pas suffisant; il faut aussi que les valeurs de 3 colonnes a lieu de 2 soient enregistrées dans le Dictionary et aussi reproduites dans le résultat.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Cherchez encore …
Vous n'avez pas bien localisé l'instruction récupérant les rôles. Si aussi les objets Worksheet représentant les feuilles "User" et "Rôles" s'appelaient WshUser et WshRôle au lieu de Feuil1 et Feuil2, ce serait plus facile de s'y retrouver.
 
Dernière édition:

mactoche

XLDnaute Nouveau
J'ai rajouté une colonne "Désignation" sur Feuill2 en position D
Et j'ai changé ceci :
VB:
Set UR = Feuil2.[A2:D2].Resize(Feuil2.[D1000000].End(xlUp).Row - 1)
.....
Code:
With Me.[B2:G1001]
.....
Code:
With Me.[B2:G2].Resize(LR)
Du coup en Feuill3 (Résultat) j'ai la colonne G qui apparait avec les notions = #N/A

Je ne dois plus être très loin :)

Christophe
 

mactoche

XLDnaute Nouveau
Merci @Dranreb
C'est super

J'ai testé et j'ai réussi a rajouter d'autres colonnes, merci encore c'est top !
Christophe
 
Dernière édition:

Discussions similaires


Haut Bas