Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3499 connectés 

 

 

 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  104  105  106  ..  111  112  113  114  115  116
Auteur Sujet :

[Topic Unique] Excel : Keep calm and Pivot Table !

n°3439763
Phenix21
Posté le 18-09-2023 à 18:45:53  profilanswer
 

Reprise du message précédent :

arnuche a écrit :

Et tu y arrives avec la formule de DjiDji59430 ? Sans mettre le signe $ ?


Oui, en doublant le nom de la colonne entre crochets
Je n'ai par contre pas vérifié si ça suivait l'allongement du tableau par exemple

mood
Publicité
Posté le 18-09-2023 à 18:45:53  profilanswer
 

n°3439786
arnuche
Posté le 18-09-2023 à 21:44:12  profilanswer
 

Ok mais dans ta question initiale il s'agissait de bloquer une ligne, pas une colonne, donc je suppose que tu as doublé le nom de cette ligne.

n°3439798
DjiDji5943​0
Posté le 18-09-2023 à 23:31:07  profilanswer
 

Donc j'avais bien "interprété". D'ou ma question
Et ça suit, comme toute autre formule, dans un tableau structuré.
 
Crdlmt

n°3439829
DjiDji5943​0
Posté le 19-09-2023 à 11:30:21  profilanswer
 

"Sauf que c'est pas très pratique de devoir cliquer dans la cellule, puis sur la flèche et ensuite devoir chercher ou scroller pour avoir le bon id."
 
Si tu connais le bon ID, t'as pas besoin de liste !
Ou tu peux aller le rechercher directement par une formule !
 
Crdlmt
 
 

n°3439845
DjiDji5943​0
Posté le 19-09-2023 à 16:54:10  profilanswer
 

Si tu joignais un morceau de fichier, representatif de ton probléme _ça serait plus parlant.
Par exemple, je ne sais pas ce que c'est qu'un SIG (Excuse mon ignorance d'éléctricien)
 
Crdlmt

n°3439873
arnuche
Posté le 19-09-2023 à 22:46:12  profilanswer
 

TARKON a écrit :

Et ma liste déroulante que j'aimerai pouvoir parcourir, en plus de la manière classique, avec un bouton +/- ou des flèches ou n'importe quoi d'autre


Une barre de défilement semble correspondre à ce que tu cherches (tu peux la faire horizontale ou verticale), elle permet de faire glisser le curseur à la souris mais aussi d'avancer/reculer avec les flèches à droite et à gauche ;
https://apprendreexcel.com/excel-aj [...] borateurs/
 
Sauf que tu ne peux pas y assigner directement ta liste (sauf peut-être via une macro), mais il y a une astuce avec la fonction décaler ;
https://www.bonbache.fr/recolter-le [...] t-745.html
 
Mais si ta liste s'allonge, il faudra probablement aller augmenter la valeur maximale dans le format de contrôle. Ou alors tu mets une valeur maximale élevée dès le départ pour prévoir les futurs ajouts à ta liste de valeurs (qui correspondent à celles de ta liste déroulante) et ne plus devoir y toucher.


Message édité par arnuche le 19-09-2023 à 23:04:53
n°3439880
arnuche
Posté le 20-09-2023 à 09:38:42  profilanswer
 

TARKON a écrit :

ma limitation vient du fait qu'on ne peut pas donner un max/min via des valeurs déjà dans le classeur.
 
Là il faudrait que je mette à la main les bornes.


Je ne pense pas que tu doives faire ça ; si tu sais qu'il y aura par exemple maximum 25 références dans ta liste, tu mets 1 en min et 25 en max dans les réglages de la barre de défilement.
La cellule liée indiquera donc un chiffre entre 1 et 25 (en fonction du positionnement de la barre de défilement) et ne sert que d'intermédiaire pour la cellule principale où se trouve la fonction Décaler qui utilisera le chiffre entre 1 et 25 pour aller chercher la valeur qui se trouve entre la 1ère et la 25ème ligne de ta liste.
Et si un jour ta liste s'agrandit, tu changes la valeur max et mets 30, ça prend 2 secondes.

n°3440009
arnuche
Posté le 21-09-2023 à 16:26:29  profilanswer
 

@ TARKON : si ça t'intéresse j'ai pondu une simple macro qui permet de mettre à jour automatiquement la valeur max de la barre de défilement en fonction de l'évolution de la taille de la liste de données (qui doit être sous forme de tableau).


Message édité par arnuche le 21-09-2023 à 16:27:12
n°3440209
arnuche
Posté le 25-09-2023 à 17:09:39  profilanswer
 

Salut,
 
je bloque sur un problème : comment compter les valeurs communes à 2 colonnes et qui sont sur la même ligne ?
Exemple ;

Code :
  1. A1.........C1
  2. pomme.....pomme
  3. sirop.....chocolat
  4. poire.....jus
  5. chocolat..poire
  6. pain......pain
  7. jus.......sirop


Les valeurs sont toutes les mêmes entre les 2 colonnes mais dans des ordres différents et seulement 2 se retrouvent sur la même ligne (pomme et pain), donc je voudrais une formule qui me renvoie 2. :jap:


Message édité par arnuche le 25-09-2023 à 17:12:04
n°3440213
DjiDji5943​0
Posté le 25-09-2023 à 18:44:32  profilanswer
 

Bonjour à tous,
 
Essaye  
=SOMME((J5:J10=K5:K10)*1)
 
Crdlmt

mood
Publicité
Posté le 25-09-2023 à 18:44:32  profilanswer
 

n°3440214
Aardpeer
Transmuteur grognon de Bluxte
Posté le 25-09-2023 à 18:45:04  profilanswer
 

si t'as de la place dans une troisième colonne tu fais un =si(C1=A1;1;0) et tout en bas un =somme(D1:D7)

 

edit : voilà je cherchais en une seule formule, avec sommeprod et ce qu'il y a entre parenthèse de DjiDji c'est bon


Message édité par Aardpeer le 25-09-2023 à 18:48:43
n°3440215
Aardpeer
Transmuteur grognon de Bluxte
Posté le 25-09-2023 à 18:47:43  profilanswer
 

DjiDji59430 a écrit :

Bonjour à tous,
 
Essaye  
=SOMME((J5:J10=K5:K10)*1)
 
Crdlmt


Ca marche avec sommeprod, pas avec somme

n°3440218
arnuche
Posté le 25-09-2023 à 19:38:36  profilanswer
 

En effet, ça marche avec SOMMEPROD, merci vous deux  ;)  
Pourquoi *1 à la fin ? Ça ne marche effectivement pas si je ne le mets pas (renvoie 0).

n°3440221
Aardpeer
Transmuteur grognon de Bluxte
Posté le 25-09-2023 à 20:28:11  profilanswer
 

parce que sinon tu as juste des vrais/faux, le *1 transforme en valeur binaire qu'on peut sommer

n°3440222
arnuche
Posté le 25-09-2023 à 20:35:15  profilanswer
 

Merci, c'est astucieux et je n'ai trouvé aucun exemple similaire.
Le fait de transformer en valeurs binaires qu'on peut sommer, c'est un peu le principe d'une matricielle non ?
Ou c'est juste que chaque "vrai" devient un "1" ?


Message édité par arnuche le 25-09-2023 à 21:49:13
n°3440226
DjiDji5943​0
Posté le 25-09-2023 à 23:19:37  profilanswer
 

Ça marche avec sommeprod() quand on n'est pas en excel >2016, mais sans quoi,ça doit marcher autrement en matricielle. En  365, si tu mest des matrices dans une formule, elle est inplicitement matricielle.
a la place du *1, tu peux mettre  
=SOMME(--(J5:J10=K5:K10)) ou SOMME(N(J5:J10=K5:K10)) , ça fait la meme chose
regarde la syntaxe de N
 
Crdlmt

Message cité 1 fois
Message édité par DjiDji59430 le 25-09-2023 à 23:22:45
n°3440310
arnuche
Posté le 27-09-2023 à 17:15:35  profilanswer
 

DjiDji59430 a écrit :

Ça marche avec sommeprod() quand on n'est pas en excel >2016, mais sans quoi,ça doit marcher autrement en matricielle. En  365, si tu mest des matrices dans une formule, elle est inplicitement matricielle.
a la place du *1, tu peux mettre  
=SOMME(--(J5:J10=K5:K10)) ou SOMME(N(J5:J10=K5:K10)) , ça fait la meme chose
regarde la syntaxe de N
 
Crdlmt


Ah oui, les 3 marchent en matriciel. :)  
Je ne connaissais pas N.
Astucieux le --, je ne savais pas qu'on pouvait mettre 2 signes comme ça consécutifs.

n°3440332
kmara2
Posté le 27-09-2023 à 22:08:36  profilanswer
 

Yop, question macro.
 
Je souhaite via une macro affectée à un bouton modifier un filtre d'une colonne, cette colonne contient des montants et je souhaite dégager via ce bouton les montants à 0€ ou vide.
Je fais la macro non pas en la rédigeant mais plutôt en enregistrant mes actions, sauf qu'au lieu d'enregistrer que je décoche, la macro enregistre les montants restants qui sont très très nombreux et j'ai alors ce message : TROP DE CARACTERE DE CONTINUITE DE LIGNE. L
La macro donne ça :
 ActiveSheet.Range("$D$8:$N$24000" ).AutoFilter Field := 8, Criteria1 := Array( _
        "1 €","1 005 €","1 007 €","1 011 €","1 046 €","1 078 €","1 092 €","1 129 €", _
        "1 134 €","1 202 €","1 213 €","1 234 €","1 255 €","1 259 €","1 304 €","1 308 €" etc etc...
 
Une solution ?


---------------
Dr. Van Helsing: The superstition of yesterday can become the scientific reality of today
n°3440339
arnuche
Posté le 28-09-2023 à 09:29:53  profilanswer
 

Et si tu enregistres juste le filtrage (donc un clic sur l'en-tête, filtre s'appliquant aux valeurs, supérieur ou égal à ...), il y a le même souci ?

n°3440350
DjiDji5943​0
Posté le 28-09-2023 à 11:41:36  profilanswer
 

Bonjour à tous,
 
mon enregistrement :
Sub Macro1()
'
' Macro1 Macro
'
    ActiveSheet.Range("$N$5:$N$9" ).AutoFilter Field:=1, Criteria1:="<>"
 
End Sub
 
Crdlmt


Message édité par DjiDji59430 le 28-09-2023 à 11:42:55
n°3440352
MaybeEijOr​Not
but someone at least
Posté le 28-09-2023 à 11:50:18  profilanswer
 

kmara2 a écrit :

TROP DE CARACTERE DE CONTINUITE DE LIGNE. L
La macro donne ça :
 ActiveSheet.Range("$D$8:$N$24000" ).AutoFilter Field := 8, Criteria1 := Array( _
        "1 €","1 005 €","1 007 €","1 011 €","1 046 €","1 078 €","1 092 €","1 129 €", _
        "1 134 €","1 202 €","1 213 €","1 234 €","1 255 €","1 259 €","1 304 €","1 308 €" etc etc...
 
Une solution ?


Suffit de tout écrire sur une seule ligne. :o  
 
Faire un tableau et utiliser les filtres du tableau ne convient pas ? Parce que franchement se coltiner une macro pour filtrer les 0 je trouve ça dommage, bien évidemment ce n'est qu'un avis personnel. ;)  


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3440408
kmara2
Posté le 29-09-2023 à 10:43:00  profilanswer
 

arnuche a écrit :

Et si tu enregistres juste le filtrage (donc un clic sur l'en-tête, filtre s'appliquant aux valeurs, supérieur ou égal à ...), il y a le même souci ?


 
Yes j'ai rusé en faisant ça, supérieur à 0 et différent de vide et ça roule  [:akhoran:3]


---------------
Dr. Van Helsing: The superstition of yesterday can become the scientific reality of today
n°3440409
arnuche
Posté le 29-09-2023 à 11:01:47  profilanswer
 

Cool, tu peux montrer le script ?
Parce que je suis curieux de voir à quoi ça ressemble avec 2 filtres.

n°3440410
kmara2
Posté le 29-09-2023 à 11:19:02  profilanswer
 

Ca c'est pour me montrer uniquement les produits non consommés cette année mais avec conso l'année dernière donc les anciens produits, donc conso >0 et différent de rien
 
ActiveSheet.PivotTables("Tableau croisé dynamique6" ).PivotFields( _
        "Libellé Produit" ).AutoSort xlAscending, "Ecart ", ActiveSheet.PivotTables( _
        "Tableau croisé dynamique6" ).PivotColumnAxis.PivotLines(3), 1
    ActiveSheet.Range("$K$8:$N$24000" ).AutoFilter Field:=9, Criteria1:=">0", _
        Operator:=xlAnd, Criteria2:="<>"
 
Même idée mais l'inverse donc les nouveaux produits
    ActiveSheet.PivotTables("Tableau croisé dynamique6" ).PivotFields( _
        "Libellé Produit" ).AutoSort xlDescending, "Ecart ", ActiveSheet.PivotTables( _
        "Tableau croisé dynamique6" ).PivotColumnAxis.PivotLines(3), 1
    ActiveSheet.Range("$K$8:$N$24000" ).AutoFilter Field:=8, Criteria1:=">0", _
        Operator:=xlAnd, Criteria2:="<>"


---------------
Dr. Van Helsing: The superstition of yesterday can become the scientific reality of today
n°3440411
arnuche
Posté le 29-09-2023 à 11:24:25  profilanswer
 

Merci, c'est simple en fait, on peut mettre plusieurs critères sur la même ligne.

n°3440482
arnuche
Posté le 30-09-2023 à 16:44:27  profilanswer
 

J'ai une colle à vous poser : est-il possible d'utiliser la fonction PETITE.VALEUR sur une sélection (ou matrice) de 3 formules (pour 3 plages) ?
Mon but est de lister via une formule incrémentable les moyennes de 3 colonnes contiguës de la plus petite à la plus grande, sans passer par une ligne supplémentaire qui contiendrait les 3 moyennes (sinon c'est trop simple  :o ).
 
Je peux les lister facilement de la première à la troisième colonne comme ceci ;

Code :
  1. =MOYENNE(INDEX($A$541:$C$544;;LIGNE(1:1)))


 
Mais si je les veux dans l'ordre croissant, ça se corse.
J'avais imaginé créer une matrice mais ça ne marche pas ;

Code :
  1. =PETITE.VALEUR(MOYENNE(INDEX($A$541:$C$544;;{1;2;3}));LIGNE(1:1))


Je pensais que mettre {1;2;3} pour choisir la colonne dans la fonction INDEX créerait une suite de 3 moyennes mais ça me renvoie juste le résultat de la première colonne.
 
J'avais aussi pensé à un truc de ce genre mais la formule est refusée ;

Code :
  1. =PETITE.VALEUR(INDEX({MOYENNE($A$541:$A$544);MOYENNE($B$541:$B$544);MOYENNE($C$541:$C$544)});LIGNE(1:1))


Message édité par arnuche le 30-09-2023 à 16:50:21
n°3440490
MaybeEijOr​Not
but someone at least
Posté le 30-09-2023 à 18:05:43  profilanswer
 

Code :
  1. =MOYENNE(PETITE.VALEUR($A$1:$A$5;LIGNE(1:1));PETITE.VALEUR($B$1:$B$5;LIGNE(1:1));PETITE.VALEUR($C$1:$C$5;LIGNE(1:1)))


Fait la moyenne de la plus petite valeur de la 1ère colonne, de la seconde colonne et de la troisième, puis le seconde plus petite valeur, etc.
 
Ou j'ai mal compris ?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3440493
arnuche
Posté le 30-09-2023 à 18:17:36  profilanswer
 

Oui, tu as mal compris  :p  
Le but est de choisir d'abord la plus petite des 3 moyennes (1 par colonne), puis la suivante, puis la plus élevée.

n°3440498
MaybeEijOr​Not
but someone at least
Posté le 30-09-2023 à 19:10:32  profilanswer
 

Ah ok, pas d'idée comme ça sans utiliser de colonne intermédiaire.


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3440514
arnuche
Posté le 01-10-2023 à 12:31:03  profilanswer
 

La fonction MIN permet de trouver la plus petite moyenne et inversement avec la fonction MAX ;

Code :
  1. =MIN(MOYENNE($A$541:$A$544);MOYENNE($B$541:$B$544);MOYENNE($C$541:$C$544))


Mais elles ne permettent pas de choisir la xième plus petite ou plus grande de la liste (donc ça ne marche que pour 2 plages), contrairement à PETITE.VALEUR et GRANDE.VALEUR, mais ces dernières ne veulent pas d'une suite de fonctions  :(  
Ceci est refusé ;

Code :
  1. =PETITE.VALEUR((MOYENNE($A$541:$A$544);MOYENNE($B$541:$B$544);MOYENNE($C$541:$C$544));LIGNE(1:1))


 
Par contre une matrice de chiffre est acceptée ;

Code :
  1. =PETITE.VALEUR({42;15;118};LIGNE(1:1))


Ça donne bien 15, j'espérais trouver le moyen de remplacer les chiffres par les fonctions MOYENNE.
 
Ou alors il faudrait passer par un truc plus complexe du genre SI(MOYENNE($A$541:$A$544)<MOYENNE($B$541:$B$544);MOYENNE($A$541:$A$544) ...
mais ce n'est pas incrémentable et devient impossible à gérer quand il y a beaucoup de plages.


Message édité par arnuche le 01-10-2023 à 12:40:35
n°3440515
MaybeEijOr​Not
but someone at least
Posté le 01-10-2023 à 12:53:04  profilanswer
 

Non mais de toute façon tu ne vas pas écrire à la main toutes les moyennes de chaque ligne ?


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3440516
arnuche
Posté le 01-10-2023 à 13:10:48  profilanswer
 

Ben non justement, c'est pour ça que je voulais faire comme avec la fonction MIN.

n°3440521
MaybeEijOr​Not
but someone at least
Posté le 01-10-2023 à 15:06:40  profilanswer
 

Oui mais là tu as écris en dur tes moyennes justement avec la fonction MIN donc je ne comprends pas...


---------------
C'est en écrivant n'importe quoi qu'on devient n'importe qui.
n°3440528
arnuche
Posté le 01-10-2023 à 15:27:10  profilanswer
 

Mais non, c'était un exemple pour montrer qu'une matrice de chiffres est possible, et j'aurais espéré qu'une matrice de formules soit aussi possible avec PETITE.VALEUR, comme avec Min/Max.

n°3440545
DjiDji5943​0
Posté le 01-10-2023 à 21:12:37  profilanswer
 

avec un tableau
 
https://www.cjoint.com/c/MJbtmtuZwFY
 
Crdlmt
 
 

n°3440546
arnuche
Posté le 01-10-2023 à 21:44:27  profilanswer
 

Merci mais ça passe par une ligne de sous-total, ça je l'avais fait dès le départ mais j'avais bien précisé que je voulais savoir si une méthode existait pour s'en passer.

n°3440556
DjiDji5943​0
Posté le 02-10-2023 à 11:30:26  profilanswer
 

avec données==> obtenir des données
 
https://www.cjoint.com/c/MJcjDjaXjcY
 
Crdlmt

n°3440557
arnuche
Posté le 02-10-2023 à 11:57:42  profilanswer
 

Merci mais j'ai eu un message d'erreur, et le but est que ça s'actualise tout seul et sans devoir faire de tableau. Pas grave je passerai par une ligne supplémentaire avec les moyennes de chaque colonne, comme ceci ;

Code :
  1. =PETITE.VALEUR($A$545:$C$545;LIGNE(1:1))

n°3440558
arnuche
Posté le 02-10-2023 à 12:02:37  profilanswer
 

Mais j'ai un autre souci de matrice avec des lettres, je voulais changer un mot en fonction de la première lettre du mot qui suit pour mettre l' au lieu de le si le mot suivant commence par une voyelle.
J'ai tenté ceci mais ça ne marche que pour la première lettre de la matrice (a), donc ça affiche le si le mot commence par une des voyelles suivantes ;

Code :
  1. =SI(GAUCHE(B573;1)={"a";"e";"i";"o";"u";"y"};"l'";"le" )


Que je sauve en matriciel ou pas c'est pareil. :??:  
 
Je me suis inspiré de cette formule (dont le but était différent) ;
https://excel-downloads.com/threads [...] t-20104793

Code :
  1. =SOMMEPROD(SI(STXT(C5;LIGNE(INDIRECT(1&":"&NBCAR(C5)));1)={"A"."E"."I"."O"."U"."Y"};(MOD(CODE(STXT(MAJUSCULE(C5);LIGNE(INDIRECT(1&":"&NBCAR(C5)));1))-65;9)+1)*1))

n°3440561
DjiDji5943​0
Posté le 02-10-2023 à 14:51:08  profilanswer
 

essaye  
=SI(SOMME(--({"a";"e";"i";"o";"u";"y"}=GAUCHE(G2;1)))=1;"l'";"le ou la" )
 
Et tu penses faire comment avec les accents ou le féminin ?

n°3440563
arnuche
Posté le 02-10-2023 à 15:56:22  profilanswer
 

DjiDji59430 a écrit :

Et tu penses faire comment avec les accents ou le féminin ?


Pour le coup il n'y en a pas dans ma liste mais ça poserait effectivement souci.
 

DjiDji59430 a écrit :

essaye  
=SI(SOMME(--({"a";"e";"i";"o";"u";"y"}=GAUCHE(G2;1)))=1;"l'";"le ou la" )


Bien vu, ça marche  :jap:  
 
Ce genre de matrice ne peut fonctionner qu'avec des lettres ou des chiffres, pas des formules ?
 
Parce que ça rejoint ma question précédente, j'avais pensé à une formule de ce genre ;

Code :
  1. =PETITE.VALEUR({MOYENNE($A$541:$A$544);MOYENNE($B$541:$B$544);MOYENNE($C$541:$C$544)};LIGNE(1:1))


Vu que les 3 moyennes donnent chacune un chiffre, je pensais que reviendrait à faire une matrice de 3 chiffres mais c'est refusé. J'ai aussi tenté avec des guillemets, --, *1 ... rien ne marche  :o  
 
Surtout que la fonction PETITE.VALEUR accepte une matrice de chiffres, comme je l'avais montré plus haut ;

Code :
  1. =PETITE.VALEUR({42;15;118};LIGNE(1:1))


Ça donne bien 15 (et 42 avec LIGNE(2:2) ...).


Message édité par arnuche le 02-10-2023 à 16:01:42
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  104  105  106  ..  111  112  113  114  115  116

Aller à :
Ajouter une réponse
 

Sujets relatifs
[EXCEL] Faire une mise à jour dynamique de valeur entre champsExcel : rechercher et afficher une liste
[EXCEL] Conversion/multiplication de massequestions sur la téléphonie avec free en 512k
Excel: Comment insérer automatiquement un titre à chaque page ?[excel] largeur de colonne différente
[Excel] (N00B Inside :-/ )Je veux additionner ...2 questions urgentes : Remplacer Photoshop et achat de scanner
changer la police par défaut sous Excel[Excel] Comment faire pivoter une feuille ?
Plus de sujets relatifs à : [Topic Unique] Excel : Keep calm and Pivot Table !


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)