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

10maquette.xlsm (27.57 Ko)

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:

Je souhaite masquer les colonnes 'options" non recensé sur la page d'accueil

... deux choses ne sont pas claires:
  • 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.
Avec cette exemple je dois retrouver dans l'onglet Edition sous ensemble la liste des tests à effectuer, à savoir :
  • Test A
  • Test B
  • Test C
  • Test option 2
Merci de votre aide

Toutes solutions sont les bien venues

9maquette2.xlsm (28.29 Ko)

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

captureaide

J'ai pensé à un autre mécanisme (cf fichier joint). Peut être la vitesse d'exécution peut être plus rapide ...

Quoi ... tu as testé ma proposition et constaté des lenteurs?

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

Bonjour,

Concernant ta réponse le code bloque au message box

Et tu ne penses pas qu'il aurait été plus pertinent et courtois de détailler le problème rencontré, de comprendre d'où il vient, plutôt que de partir sur une autre idée ?
Rechercher des sujets similaires à "creation outil"