Masquer ligne sous condition

Résolu
perlox34 Messages postés 76 Date d'inscription dimanche 15 octobre 2023 Statut Membre Dernière intervention 27 février 2024 - 15 oct. 2023 à 14:00
 Le Pingou - 27 oct. 2023 à 11:44

Bonjour, pourriez vous me dire la formule de macro pour masquer une ligne sous condition svp merci

Je vous explique : Je voudrais que la ligne 11 reste afficher pour marquer la raison social quand il y a marqué " Pro " en D5 mais par contre si je marque perso en D5 je voudrais masquer la ligne 11.

Si vous pouvez me donner la formule merci beaucoup


Macintosh / Opera 102.0.0.0

A voir également:

77 réponses

perlox34 Messages postés 76 Date d'inscription dimanche 15 octobre 2023 Statut Membre Dernière intervention 27 février 2024
15 oct. 2023 à 19:51
0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 079
Modifié le 15 oct. 2023 à 20:18

Re,

pour terminer ta demande précédente et que tu comprennes, si par exemple tu voulais que le code s'applique à des lignes dis contiguës, exemple lignes de 11 à 12 et de 15 à 17 le code serait

Private Sub Worksheet_Change(ByVal Target As Range)
If [D5] = "Pro" Or [D5] = "pro" Then Range("11:12,15:17").EntireRow.Hidden = False Else Range("11:12,15:17").EntireRow.Hidden = True
End Sub

Pour ta dernière demande, il faut être plus précis, le VBA est strict et ne tolère aucune erreur, colonne suivi quel est son index H, I, J, K  ?

perso je rajouterais une colonne Contrôle pour éviter de copier plusieurs fois une ligne,

et colonne suivi comment est saisi OUI ou qui a t'il d'autre comme mot possible ?

et es ce que ta dernière demande concerne le même onglet que la demande initiale


0
perlox34 Messages postés 76 Date d'inscription dimanche 15 octobre 2023 Statut Membre Dernière intervention 27 février 2024
15 oct. 2023 à 20:27

D’accord merci j’ai bien compris le code nickel ! 
 

pour la nouvelle feuille je t’ai créé un lien ou il y a le fichier Excel pour que tu vois mieux les cellules tout ça. 
 

https://www.cjoint.com/c/MJpsAosPUKs

0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 079
15 oct. 2023 à 20:44

Re,

on est bien d'accord, c'est un fichier différent qui n'a rien à voir avec la première demande ?

ensuite est il possible d'harmoniser les deux onglets afin d'avoir les deux tableaux qui commencent à la même colonne et ligne ? dans ton exemple un tableau commence cellule C10 et l'autre D12 ? 


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
perlox34 Messages postés 76 Date d'inscription dimanche 15 octobre 2023 Statut Membre Dernière intervention 27 février 2024
15 oct. 2023 à 20:49

Oui ça a rien avoir avec la première demande. 
La c’est la demande pour copier dans l’autre tableau avec un oui. 
 

oui c’est un exemple vous pouvez modifier 

0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 079
15 oct. 2023 à 20:53

Re,

ok, j'habite le pays du rugby et ce soir c'est grand écran.


0
perlox34 Messages postés 76 Date d'inscription dimanche 15 octobre 2023 Statut Membre Dernière intervention 27 février 2024
15 oct. 2023 à 23:06

De 1 point ... :'(

0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 079
15 oct. 2023 à 23:11

Re,

récupère ton fichier, j'ai créé une mise en forme conditionnelle pour coloriser une ligne sur deux sur chaque onglet pour éviter d'avoir un mélange anarchique des couleurs Feuil2 après le transfert des données.

je t'ai annoté chaque ligne du code pour que tu le suives et le reproduises, l'annotation apparait en vert après une série de pointillés.

Le déclenchement se fait à partir de la saisie OUI colonne  onglet Feuil1

https://www.cjoint.com/c/MJpvjNCMhvF


0
perlox34 Messages postés 76 Date d'inscription dimanche 15 octobre 2023 Statut Membre Dernière intervention 27 février 2024
16 oct. 2023 à 12:30

Cool merci à toi tu pourrais juste rajouter un code pour que quand je supprime le OUI ca me supprime la ligne copié merci 

Et c'est possible d'enlever la mise en forme conditionnel ? Car dans le 2eme tableau j'aurais mes lignes colorier a ma facon merci 

0
perlox34 Messages postés 76 Date d'inscription dimanche 15 octobre 2023 Statut Membre Dernière intervention 27 février 2024
16 oct. 2023 à 12:43

Sinon aurait-tu pas une formule plutot qu'une macro ? Merci 

0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 079
16 oct. 2023 à 14:05

Re,

Voilà uniquement par formules,

pour protéger les formules complexes Feuil2, je te conseille de protéger cette feuille

https://www.cjoint.com/c/MJqmeTaVllF 


0
perlox34 Messages postés 76 Date d'inscription dimanche 15 octobre 2023 Statut Membre Dernière intervention 27 février 2024
16 oct. 2023 à 21:13

D'accord merci c'est super cool merci beaucoup. Tu peux juste m'expliquer la formule ? 

C'est pour que je la copie sur mon fichier original dans mon tableau. 

0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 079
16 oct. 2023 à 22:40

Voilà

dans l'exemple, la formule s'applique pour la plage $B$5:$B$15 de l'onglet Feuil1 (à adapter)

En fait il s'agit à la base d'une formule basique  INDEX(Feuil1!$B$5:$B$15;position dans la liste), colonne C cette partie de formule sera modifié en Feuil1!$C$5:$C$15 etc.

pour définir la position on aurait pu utiliser la fonction EQUIV("CLIENT  ";Feuil1!$B$5:$B$15;0) qui aurait renvoyé la position de la première occurrence rencontré  soit 1

le problème est que le test doit se faire sur la colonne K sur le critère "OUI" et il peut y en a plusieurs, donc on va les lister

en utilisant une des dernière syntaxe créé par Microsoft AGREGAT qui va faire abstraction des lignes en erreur. Cette syntaxe peut être utilisée dans de nombreux cas je t'invite à regarder des tutos sur Google

cette partie de formule de la première ligne va retourner 1 si le premier "OUI" est sur la première ligne ou 3 si le premier "OUI" se trouvait sur la troisième ligne

AGREGAT(15;6;LIGNE(Feuil1!$K$5:$K$15)-LIGNE(Feuil1!$K$5)+1/(Feuil1!$B$5:$K$15="oui");LIGNE(1:1))

la formule AGREGAT se termine par LIGNE(1:1) ce qui renvoi 1 et renseigne la syntaxe de la première occurrence "OUI" trouvée

la formule incrémentée sur la deuxième ligne LIGNE(1:1) devient LIGNE(2:2) pour rechercher la deuxième occurrence etc

ce qui donne comme formule

INDEX(Feuil1!$B$5:$B$15;AGREGAT(15;6;LIGNE(Feuil1!$K$5:$K$15)-LIGNE(Feuil1!$K$5)+1/(Feuil1!$B$5:$K$15="oui");LIGNE(1:1)))

pour terminer la formule est encadrée d'une gestion d'erreur

=SIERREUR( la formule ;"") ce qui renverra rien ou vide dans le cas d'erreur rencontrée par la formule ou le résultat de la formule

Avec les versions d'Excel plus anciennes on aurait fait une formule matricielle plus complexe et gourmande en ressource ce qui ralentirait le système


0
perlox34 Messages postés 76 Date d'inscription dimanche 15 octobre 2023 Statut Membre Dernière intervention 27 février 2024
17 oct. 2023 à 13:54

Je suis désole mais j'ai du mal a l'appliquer .. 

Il y a juste un petit truc a changer, je vois que dans ta formule c'est par exemple de B5 a K15 et de K5 a K15, mais moi je voudrais dire a la formule que c'est dans toute les lignes du tableau et dans toute ma colonne de mon tableau. 

Car dans ma feuil1 je vais inserer des lignes a mon tableau de temps en temps et je voudrais bien sur que la formule reprenne les nouvelles ligne de mon tableau es ce possible ? 

Je t'ai mis sur le lien le fichier avec les 2 tableau de crée. Merci 

https://www.cjoint.com/c/MJrl0DWbpRZ

0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 079
17 oct. 2023 à 15:26

Re,

Déjà la formule avec LIGNE(1:1) est sur la ligne n°5 alors qu'elle devrait se trouver sur la ligne n°2 ce qui fait que les formules incrémentées vers le haut son en erreur LIGNE(#REF!) alors que tu devrais avoir LIGNE(1:1) ligne 2 LIGNE(2:2) ligne 3 etc ...

ensuite mon contrôle se fait de la ligne 5 à 15, il te suffisait de modifier 15 en 40 pour avoir Feuil1!$B$5:$B$40 et idem pour K15 en K40

en ce qui concerne l'adaptation automatique à l'évolution de ton tableau, bien sur c'est possible ce qui compliquera le formule, je pense qu'a ton niveau le plus simple serait de travailler avec des plages nommées, exemple pour Feuil1!$B$5:$B$15 si tu nommes cette plage List_b,  List_c pour la colonne C etc ... pour Feuil1!$K$5:$K$15 List_K et pour Feuil1!$B$5:$K$1 nommé Tablo

la formule deviendrait

=SIERREUR(INDEX(List_b;AGREGAT(15;6;LIGNE(List_k)-LIGNE(Feuil1!$K$5)+1/(Tablo="oui");LIGNE(1:1)));"")

et tu n'aurais que le plages nommées à modifier.

Ce soir je te ferais une formule avec adaptation automatique à l'évolution du tableau mais je crains que tu t'y perde


0
perlox34 Messages postés 76 Date d'inscription dimanche 15 octobre 2023 Statut Membre Dernière intervention 27 février 2024
17 oct. 2023 à 18:29

Ok merci t'a reçu mon message en privé ? 

0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 079
18 oct. 2023 à 22:04

Re,

Le forum est un lieu de partage du savoir, les réponses techniques doivent se faire en clair pour permettre à des demandes similaires de s'en inspirer.

J'ai renommé les onglets mais tu peux laisser les noms Feuil1, Feuil2 etc ...

Le plus simple est de travailler avec les plages nommées, exemple l'onglet que j'ai nommé Liste

j'ai sélectionné la matrice matrice B5:K40 que j'ai nommé Tablo

puis dans chaque colonne, B5:B40 nommée List_b

puis la C5:C40 nommée List_c puis D5:D40 nommée List_d etc ...

onglet que j'ai renommé Formule en cellule B5 j'ai adapté la formule qui avec les plage nommées est devenue

=SIERREUR(INDEX(List_b;AGREGAT(15;6;LIGNE(List_k)-LIGNE(Liste!$K$5)+1/(Tablo="oui");LIGNE(1:1)));"")

ensuite j'ai incrémenté vers la droite cette formule jusqu'à la cellule K5

puis en C5 il faut modifier juste List_b  en List_c =SIERREUR(INDEX(List_c;AGREGAT

puis en D5 List_d ainsi de suite juqu'à K5 qui sera List_k

ensuite sélectionner la plage B5:K5 et incrémenter vers le bas dans l'exemple jusqu'à la ligne 40

Ton tableau onglet Liste est certainement appelé à grandir, il suffit simplement d'ajouter des lignes avant la dernière ligne du tableau dans l'exemple avant la ligne 40 soit entre la ligne 5 et la ligne 40 et toutes les plages nommées ainsi que les formules s'actualiseront automatiquement.

En ce qui concerne l'agrandissement du tableau onglet que j'ai renommé Formule comme pour l'onglet précédent,

déprotéger la feuille

ajouter des lignes avant la dernière ligne du tableau dans l'exemple  avant la ligne 40 soit entre la ligne 5 et la ligne 40

pour insérer les formules dans les nouvelles lignes, il suffit de sélectionner une ligne contenant les formules exemple B10:K10 même si elle affiche déjà des données et l'incrémenter vers le bas jusqu'à la fin du tableau, même si des lignes affichaient des données elles se remettront automatiquement en bonne place

reprotéger la feuille pour protéger les formules

Si tu renommes les onglets les plages nommées ainsi que les formules s'actualiseront également automatiquement.

https://www.cjoint.com/c/MJst7X8X4kF


0
perlox34 Messages postés 76 Date d'inscription dimanche 15 octobre 2023 Statut Membre Dernière intervention 27 février 2024
19 oct. 2023 à 06:56

Parfait c'est génial merci à toi ! 

J'ai pas eu à renommer les matrices car j'ai crée un tableau avec des en-tête et ça marche a merveille surtout que ça s'actualise en grandisant mon tableau car j'ai mis " [#Tout] " dans ma formule, c'est nickel donc voici ma formule final :

=SIERREUR(INDEX(Tableau2[PRENOM];AGREGAT(15;6;LIGNE(Tableau2[[#Tout];[SUIVIS]])-LIGNE('FICHIER '!$I$7)+1/(Tableau2[#Tout]="oui");LIGNE(4:4)));"")

https://www.cjoint.com/c/MJte0N58ZgN

Par contre je copie/colle sans comprendre mdr

Je pense avoir presque tout captez dans la formule sauf : LIGNE(Tableau2[[#Tout];[SUIVIS]])-LIGNE('FICHIER '!$I$7)+1

La ce que je comprends c'est qu'on va chercher les lignes de tous mon tableau dans la colonne suivis donc la dans l'occurence c'est de la ligne 6 a 15 c'est bien ça ? 

Mais apres je comprends pas -LIGNE('FICHIER '!$I$7)+1 ? Merci 

0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 079
Modifié le 19 oct. 2023 à 09:28

Re,

ta formule onglet SUIVIS cellule C7 est:

=SIERREUR(INDEX(Tableau2[CLIENT PROSPECT];AGREGAT(15;6;LIGNE(Tableau2[SUIVIS])-LIGNE('FICHIER '!$I$7)+1/(Tableau2="oui");LIGNE(1:1)));"")

ensuite il te suffit d'incrémenter cette cellule vers la droite jusqu'à la cellule H7 puis sélectionner la plage C7:H7 et l'incrémenter vers le bas jusqu'à la fin de ton tableau.

Il faut que tu apprennes à tester tes formules ou partie de formule, exemple, lorsque tu clique sur la cellule C7, il apparait dans ta barre des formules la formule affectée à cette cellule, si tu sélectionnes une partie valide de ta formule, exemple cette partie en gras et tu clic sur la touche F9

=SIERREUR(INDEX(Tableau2[CLIENT PROSPECT];AGREGAT(15;6;LIGNE(Tableau2[SUIVIS])-LIGNE('FICHIER '!$I$7)+1/(Tableau2="oui");LIGNE(1:1)));"")

il s'affichera ce que cette partie renvie, soit l'index ligne concerné de 7 à 18 {7;8;9;10;11;12;13;14;15;16;17;18}

il est impératif  après chaque test de sortir de cette procédure en cliquant sur la touche Echap

si maintenant tu veux tester cette partie en gras

=SIERREUR(INDEX(Tableau2[CLIENT PROSPECT];AGREGAT(15;6;LIGNE(Tableau2[SUIVIS])-LIGNE('FICHIER '!$I$7)+1/(Tableau2="oui");LIGNE(1:1)));"")

la formule renvie {8}

Tu va te demander pourquoi 8 et bien tout simplement pour ne pas afficher deux fois le même résultat que la ligne précédente

et ainsi de suite pour chaque partie qui compose la formule.

Une autre astuce, dans ton cas pour ne pas afficher les valeurs 0 parce des cellules de ta matrice sont vides, sélectionne ton tableau onglet SUIVIS, Clic droit sur la sélection/Format de cellule/Nombre/Personnalisée/dans Type colle Standard;; ou 0;; 


0
perlox34 Messages postés 76 Date d'inscription dimanche 15 octobre 2023 Statut Membre Dernière intervention 27 février 2024
19 oct. 2023 à 18:02

Merci à toi ! T'explique vraiment bien merci ! 

Tu dis de cliquer sur la touche F9 mais je suis sur un mac et la touche F9 ne marche pas sur mac. 

0