Une histoire de familles

Bonjour,

D'abord toutes mes excuses à Banzai64, qui m'a bien aidé sur ce problème il y a quelques jours, mais mes données ont quelque peu changé, et je suis à nouveau devant le mur.

Je cherche toujours à mettre des données en forme, présentables, pour que ce soit imprimable (ce sont des check list).

Je reçois mes données sous forme de fichier *.csv

Les données sont de 3 types;

  • le code
  • la famille et la sous famille auxquelles il appartient
  • et un intitulé associé (un court blabla..)
J'ai mis tout ça en forme dans la feuille "LISTE" (trié par familles puis pas codes)

Ensuite, divers cas se présentent, dans lesquels je n'ai besoin que de certains codes (partie 'gestion des cas' de la feuille "LISTE") et pour lesquels je dois imprimer une check list.

Je me suis attaqué au 'CAS_1', et dans la feuille "TRI_CAS_1" j'ai isolé les différents cas d'emploi, et aussi séparé les Familles des Sous-Familles (en fait la feuille n'a que peu d'intérêt, c'était pour voir si mes tableaux marchaient...)

Mon but, est d'arriver à quelque chose qui ressemble à la feuille "MISE_EN_FORME_SOUHAITEE..."

Et là... Je bute.

Pensez vous que cela soit possible ?

Mon souhait étant bien sur à l'avenir de ne toucher qu'à la feuille "LISTE" le reste demeurant automatique.

A vo't bon coeur m'sieur dames.....

Bonjour

A vérifier soigneusement

Édit : Mauvais fichier

Banzai64 a écrit :

Bonjour

A vérifier soigneusement

Bjr Banzai64, tu veux que je te dise...

Je pense que je vais passer 2 jours à essayer de comprendre.

Juste une question. Est ce qu'il est normal que les feuilles de C_1 à C_8 se remplissent de façon identiques, ou est ce ...un test pour voir si je suis.. ?

En tout cas, merci, et c'est parti F8....F8....F8....F8....F8....F8....F8....F8.................

Bonjour

BastLat a écrit :

Est ce qu'il est normal que les feuilles de C_1 à C_8 se remplissent de façon identiques

Oui au point de vue de la macro c'est normal

A ton point de vue c'est une erreur

A vérifier dans celui-ci

Je me réponds à moi-même

J'ai remplacé

      End If
    Next Colonne
    If .AutoFilterMode = True Then .AutoFilterMode = False
    .Columns("L:M").ClearContents
    .Select
  End With
  MsgBox "Terminé"
End Sub

par

      End If
    If .AutoFilterMode = True Then .AutoFilterMode = False
    Next Colonne
    .Columns("L:M").ClearContents
    .Select
  End With
  MsgBox "Terminé"
End Sub

Et cela semble fonctionner maintenant. J'ai pas fait une bêtise ?

En tout cas super. Je suis à des années lumière avec mes

If...Then...Goto

Je ne marque pas encore "Résolu".... On ne sait jamais

On a écrit en même temps ..


Banzai64 a écrit :

Bonjour

BastLat a écrit :

Est ce qu'il est normal que les feuilles de C_1 à C_8 se remplissent de façon identiques

Oui au point de vue de la macro c'est normal

A ton point de vue c'est une erreur

A vérifier dans celui-ci

Il semble que j'ai fait mieux en économisant une ligne de code !!

Alors là, je suis pas peu fier !!

Bon, finalement comme je ne suis pas absolument sur, j'ai laissé les deux lignes

J'ai déjà fait quelques modifs (sur la forme), et ça marche à merveille.

Par contre, pourrais tu m'expliquer succinctement cette ligne là stp ?

If Application.Subtotal(103, .Columns("F")) > 0 Then....

Celle là m'est complètement hermétique....

Bonsoir

BastLat a écrit :

Bon, finalement comme je ne suis pas absolument sur, j'ai laissé les deux lignes

Très compliqué car normalement la macro ne devrait pas commencé sur une page filtrée

Elle indique si le filtre donne un résultat

Cette fonction compte les lignes visibles

Voir l'aide sur la fonction SOUS.TOTAL()

Si dans une colonne Cas_x il n'y a pas de 1, cette fonction retournera 0 --> Pas de création de feuille

En plus j'ai du faire une erreur

ce n'est pas

If Application.Subtotal(103, .Columns("F")) > 0 Then....

Mais

If Application.Subtotal(103, .Columns("L")) > 0 Then
Banzai64 a écrit :

Bonsoir

BastLat a écrit :

Bon, finalement comme je ne suis pas absolument sur, j'ai laissé les deux lignes

Très compliqué car normalement la macro ne devrait pas commencé sur une page filtrée

Bon alors je laisse les deux...

Par contre ici il y a un problème;

Banzai64 a écrit :

Elle indique si le filtre donne un résultat

Cette fonction compte les lignes visibles

Voir l'aide sur la fonction SOUS.TOTAL()

Si dans une colonne Cas_x il n'y a pas de 1, cette fonction retournera 0 --> Pas de création de feuille

En plus j'ai du faire une erreur

ce n'est pas

If Application.Subtotal(103, .Columns("F")) > 0 Then....

Mais

If Application.Subtotal(103, .Columns("L")) > 0 Then

car avec

If Application.Subtotal(103, .Columns("F")) > 0 Then....

on comptait bien les "1". Que de la colonne "F" certes, mais des "1". (en ignorant les valeurs masquées )

Alors qu'avec

If Application.Subtotal(103, .Columns("L")) > 0 Then

on compte les "Familles".

Or, il y aura toujours des "Familles" même s'il n'y a pas de "1" dans la colonne triée...

Donc création d'une feuille vide...

Il faudrait déplacer

If Application.Subtotal(103, .Columns("X")) > 0 Then....

avec la colonne traitée "X"...

J'ai juste là ?

Bonjour

BastLat a écrit :

J'ai juste là ?

Pas avec le fichier joint

Fais une expérience

Travailles avec une copie

Dans le code tu rajoutes un end

  With WsListe
    NbLg = .Range("A" & Rows.Count).End(xlUp).Row
    .Range("B3:B" & NbLg).TextToColumns Destination:=.Range("L3"), Tab:=False, semicolon:=False, comma:=False, Space:=False, other:=True, otherchar:="%"
   End
    For Colonne = 4 To 11   ' Colonne D à K

Lances le programme

Ensuite tu effaces une colonne Cas_x sauf le titre

Tu filtres avec un 1

Et tu regardes en colonne L combien de lignes sont apparentes

C'est tout

Bonjour,

Banzai64 a écrit :

.......Fais une expérience..........Lances le programme

......Et tu regardes en colonne L combien de lignes sont apparentes

.....C'est tout

Effectivement, j'ai parlé trop vite.

Bon, et bien je laisse comme ça; bien qu'il y ait toujours cette petite remarque qui me trotte dans la tête

Banzai64 a écrit :

Très compliqué car normalement la macro ne devrait pas commencé sur une page filtrée

...et c'est bien le cas... non ?
  With WsListe
    NbLg = .Range("A" & Rows.Count).End(xlUp).Row
    .Range("B3:B" & NbLg).TextToColumns Destination:=.Range("X3"), Tab:=False, semicolon:=False, comma:=False, Space:=False, other:=True, otherchar:="%"
    For Colonne = 4 To 11   ' Colonne D à K
      If .AutoFilterMode = True Then .AutoFilterMode = False
     .Range(.Cells(2, Colonne), .Cells(NbLg, Colonne)).AutoFilter field:=1, Criteria1:=1
      If Application.Subtotal(103, .Columns("X")) > 0 Then
        If FeuilleExiste(.Cells(2, Colonne).Value) = False Then

On risque que ça plante ?

Sinon,

  • j'ai fait un peu de cosmétique sur les titres, je pense aller bien plus loin...
  • j'ai supprimé une Sous_Famille (CAS_5) et l'affichage reste OK
  • j'ai déplacé la colonne L(et M) du code en X(et Y) pour permettre de créer d'autres CAS_x

Bonjour

BastLat a écrit :

..et c'est bien le cas... non ?

Bien sur la page "LISTE" au départ ne sera pas filtrée

Pour être plus "prévoyant" il faudrait d'entrée éliminer les filtres dès le départ, et à la fin de chaque boucle

Ce qui donnerait pour le début de la macro

  With WsListe
    If .AutoFilterMode = True Then .AutoFilterMode = False
    NbLg = .Range("A" & Rows.Count).End(xlUp).Row

Et pour la fin de la macro

        Next Cel
      End If
      If .AutoFilterMode = True Then .AutoFilterMode = False
    Next Colonne
    .Columns("X:Y").ClearContents
    .Select
  End With

Mais le plus important en situation "normale" c'est celui placé à la fin de la macro

Merci,

J'ai maintenant ce que je cherchais.

Il n'y a plus qu'un peu de cosmétique à faire.

Une dernière question avant de clore le sujet:

N'est il pas possible de traiter les données des lignes "L" et "M" à l'aide de 'tableaux( )'

et peut être même plus, lire la feuille "LISTE" remplir un tableau(), faire le traitement, et afficher les résultats.

En m'appuyant sur ton code, j'ai envie d'essayer.

Mais seulement pour me faire du mal !!

Car ce que j'ai maintenant me convient parfaitement

Bonjour

Bien sur que c'est possible

Mais je n'aventurerai pas sur ce chemin

Car je pense que le plus long c'est la construction des tableaux avec les bordures,couleurs etc ... et non la lecture des infos

Et ce n'est pas une macro qui s'exécute toutes les 5 minutes

Mais je te laisse le loisir de "te faire du mal"

Ok.

Merci encore pour tout (je dois en être à 250 "merci" (faudrait créer une macro pour les compter ))

Et à bientôt pour de nouvelles aventures !

Rechercher des sujets similaires à "histoire familles"