CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[VBA Macro]

mistoen
mistoen
Niveau 9
10 décembre 2016 à 13:48:04

Bonjour à tous,

J'ai un gros soucis avec un tableau de données type que je dois traiter et filtrer et je ne suis pas un grand aguerri de Excel.

J'ai des données qui se présentent sous cette forme:

A B C
[...] [...] [...]
20 11 2
21 12 3
22 13 2
23 14 2
24 15 2
25 16 2
26 17 2
27 18 3
28 19 2
29 20 2
30 21 3
31 22 2
32 23 3
33 24 2
[...] [...] [...]

La colonne A correspond au numéro de la ligne, la colonne B au numéro de l'item parmi toute une liste d'items, la colonne C à une valeur que prend cet item (2 ou 3).

Ce que j'ai besoin de faire c'est de dire "Si dans la liste des items n°11 à n°24 (colonne B) [Donc dans le Range de A20 à A33] le nombre de "2" (colonne C) est supérieur à la moitié du nombre de valeurs totales de la colonne C, alors inscrire dans une colonne N "go" quand l'item prend pour valeur "2", sinon inscrire "no-go" (donc quand l'item prend pour valeur "3").

La formule que j'ai trouvé pour une ligne est:
=SI(NB.SI(A20:A33;"=2")>7;SI(A20=2;"GO"; "NOGO"))

Cependant, si j'utilise le petit carré noir pour déployer cette formule sur toute la plage ("D20":"D33"), alors à chaque ligne ça décale d'une ligne, ce qui fait que pour la formule en "D24" je ne suis plus du tout dans la plage ("A20":"A33").

A partir de l'outil "Enregistrer macro" j'ai récupéré le code VBA suivant:
Range("N20").Select
ActiveCell.FormulaR1C1 = _
"=IF(COUNTIF(RC[-12]:R[13]C[-11],""=2"")>7,IF(RC[-12]=2,""GO"", ""NOGO""))"
Range("N20").Select
Selection.AutoFill Destination:=Range("N20:N33"), Type:=xlFillDefault
Range("N20:N33").Select

Et celui-ci me fait la même fonction: décaler le range d'une ligne à chaque fois.

L'un de vous pourrait-il m'aider à résoudre ce problème ? J'imagine que si c'est résolu par le biais d'une formule alors je peux via Enregistrer macro en retirer la macro efficace.

D'avance merci !

Yugi_slaw
Yugi_slaw
Niveau 10
10 décembre 2016 à 14:54:00

Si tu veux bloquer des colonne ou des lignes dans tes formule tu dois ajouter un signe $ avant.

=SI(NB.SI($A$20:$A$33;"=2")>7;SI(A20=2;"GO"; "NOGO"))

Ca bloque le range A20:A33. Si tu as besoin de bloquer juste la colonne enleve les dollars avant la reference de ligne. Ensuite si tu veux rendre dynamique ta condition tu peux remplacer 7 par (NB(A20:A33)/2) pour compter le nombre de valeur dans ta range et avoir la moitié.

Je t'invite à rechercher ce que sont les références absolues et relatives pour Excel.

Message édité le 10 décembre 2016 à 14:54:47 par Yugi_slaw
mistoen
mistoen
Niveau 9
10 décembre 2016 à 14:58:20

Ah parfait ! Je n'étais pas au courant de ces références. Merci !!

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment