Création outil
Bonjour
Je sollicite votre aide à tous pour la création d'une petit outil.
Je vous mets en PJ ma maquette.
Dans mon fichier 3 onglets : pg ; Roue et Edition.
J'aimerai en cliquant sur un bouton sur la page de garde :
1) Je souhaite masquer les colonnes 'options" non recensé sur la page d'accueil.
2)Ensuite j'aimerai que la macro filtre les lignes de la colonne qui ont la valeur 1.
3)Ces lignes dont la valeur est 1 j'aimerai qu'elle passe en rouge
4)Copier les élements de la colonne A vers l'onglet Edition
5)Une fois le processus effectuer démasquer toutes les colonnes masquées dans l"'onglet Roue
Merci pour votre aide très précieuse
Bonne journée
Bonjour Ben92 et bienvenue,
J'ai lu ton message hier, ouvert ton fichier ... et me suis dit que quelqu'un d'autre comprendrait mieux que moi
Ce matin, nous sommes 24 à t'avoir lu et il n'y a toujours pas de réponse.
Pour ce qui me concerne, dans la phrase suivante:
... deux choses ne sont pas claires:Je souhaite masquer les colonnes 'options" non recensé sur la page d'accueil
- Qu'est-ce que tu appelles ta page d'accueil ? Ta page de garde ?? Ou alors ta feuille "Roue" ?
- Si c'est la page de garde, je ne vois pas ce qui permet de déterminer quelles sont les colonnes "non recensées". Si c'est la feuille "Roue", c'est en fonction des colonnes qui ne portent pas de "X" en ligne 1 ?
À cela viennent s'ajouter des questions de tous ordres:
- Pourquoi ne pas simplement utiliser des filtres "classiques" ?
- Pourquoi masquer certaines colonnes pour filtrer, puis les réafficher ensuite ?
- Pourquoi pas des Mises en Forme Conditionnelles, pour colorer les cellules contenant un '1' ?
- Pourrait-il y avoir plusieurs colonnes "non recensées", ou seulement une ?
- Si une solution sans macro existe, elle ne t'intéresse pas?
- ... toutes mes excuses aux questions que j'aurais oublié de citer
Bonjour,
Merci de votre retour. J'espère être plus précis cette fois ci.
J'ai joint un fichier moins désordre.
Sur la page de garde (1er onglet) toutes les configurations possibles (1,2 ou 3) et toutes les options possibles sur le sous ensemble (option1, 2 ou 3).
Sur la page de garde, s'il y a présence de la config ou l'option sur le sous ensemble, un "Oui" est indiqué dans le cas contraire un "Non" est inscrit.
Cette configuration est manuel !
Par contre, pour ce qui est de la suite des opérations, j'aimerai qu'elle s'effectue de manière automatique d'où la présence d'un bouton en page de garde.
Sur l'onglet Sous ensemble 1, le listing de tous les tests à effectuer quelque soit la config ou les options.
A coté de cette liste de "test d'option" ou de "test de config", un tableau de matrice.
Et enfin le dernier onglet "Edition sous ensemble" qui sera un copier coller de tous les tests à faire suivant l'option ou les options présentes e et la ou les config(s) présentes.
En citant un exemple :
Exemple 1 Editer un sous ensemble avec une config 1 et 3 et option 2
L'idée générale du processus automatique qui va s'effectuer par un bouton est de :
- Lire si la config 1 et 3 sont présentes et si l'option 2 est présente sur la page de garde (inscription du "Oui" dans les cellules correspondantes)
- Aller dans l'onglet "Sous ensemble" et filtrer (avec le critère : 1) les colonnes de la config 1, de la config 3, de l'option 2. Copier les lignes correspondantes et le coller dans l'onglet Edition Sous ensemble 1.
- Test A
- Test B
- Test C
- Test option 2
Toutes solutions sont les bien venues
Re-bonjour,
Pas le temps de regarder très en détail (mais tu verras bien ce qu'il en est) ... Avec ton exemple, je me retrouve avec 2 fois le Test A, dans la feuille Edition.
J'ai prévu un petit test si une config ou une option choisie en page de garde ne sont pas reprises dans la Feuil2, mais il y aura sans doute d'autres tests à réaliser. Il faudra aussi penser à effacer les données de la feuille Edition à chaque exécution du code.
Pas certain que ton système soit le plus performant (mais ça aussi, tu verras
À coller dans un Module standard:
Sub ListerConfig()
Set pg = Sheets("Page de garde")
Dim tablo()
For lig = 5 To pg.Cells(Rows.Count, 3).End(xlUp).Row
If UCase(pg.Cells(lig, 3)) = "OUI" Then
With Sheets("Sous ensemble 1")
col = Application.Match(pg.Cells(lig, 2), .[2:2], 0)
If IsError(col) Then MsgBox "Pas trouvé " & pg.Cells(lig, 2) & " en Feuille " & .Name: Exit Sub
derlig = .Cells(Rows.Count, 1).End(xlUp).Row
For Each c In .Range(.Cells(3, col), .Cells(derlig, col))
If c = 1 Then
ReDim Preserve tablo(x)
tablo(x) = .Cells(c.Row, 1)
x = x + 1
End If
Next c
End With
End If
Next lig
Sheets("Edition Sous ensemble 1").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(x, 1) = Application.Transpose(tablo)
End Sub
Merci de votre réponse,
J'ai pensé à un autre mécanisme (cf fichier joint). Peut être la vitesse d'exécution peut être plus rapide ...
La macro devra :
1) Vérifier le contenu de la cellule B2 :
Si présence "X" alors surligner en rouge toutes les lignes de la colonne B avec 1 dans les cellules
Si présence "" alors arrêter.
Pourriez vous m'aider à créer cette boucle ? ou me donner des indications ?
Merci pour votre attention
J'ai cherché de mon côté et j'ai réussi à trouvé ce code là : avec des boucles
' test Macro
'
' On calcule la derniere ligne de la colonne A
Dim Derlign As Long
Derlign = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
'On enlève les eventuelles mise en fond jaune précédentes
Range("A4:G" & Derlign).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ColorIndex = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'On test la colonne puis la ligne pour colorer le fond en jaune
For a = 2 To 6
If Cells(2, a).Value = "X" Then
For b = 4 To Derlign
If Cells(b, a).Value = 1 Then
Range(Cells(b, 1), Cells(b, 7)).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ColorIndex = 6
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
Next b
End If
Next a
End Sub
Maintenant je cherche à rajouter ou traiter par une autre macro le processus suivant :
Copier les lignes de la colonne A (qui sont en fond jaune) pour les copier dans un autre onglet sur la plage dédié ...
Concernant ta réponse le code bloque au message box