Microsoft 365 Aide sur formule matricielle complexe

J

jip31

Guest
Bonjour
L'onglet "Recap" du fichier joint récupére automatiquement des données saisies dans Forms
Les colonnes J et N récupèrent des informations liées au type de panne et les colonnes I et M des informations liées à la population impactée
Je peux donc avoir un jour la population "Guich" en colonne M et la poulation "COB" en colonne I et inversement le lendemain
C'est la même chose pour le type de panne
Je voudrais donc récupérer dans l'onglet "Suivi" les données si les 2 conditions suivantes sont respectées
1) Je ne veux récupérer que les lignes correspondant à la population "Guich"
Donc si dans la colonne I ou dans la colonne M de l'onglet "Recap", je veux récupérer cette valeur dans la colonne E de l'onglet "Suivi"
2) Je ne veux récupérer que les lignes correspondant à la population "Guich" que si en colonne J ou N le type de
panne est "Applicatifs" A copier dans la colonne F de l'onglet "Suivi". S'il est réseau, je ne veux pas récupérer la ligne
Dernière chose, s'il y a bien un évènement correspondant à ces 2 conditions, je veux que le contenu des cellules E, F, G, et H de l'onglet "Recap" soit copiées dans les colonnes
A, B, C et D de l'onglet "Suivi"
NB: Quand je parle de ne pas récupérer les lignes, cela veut dire qu'elle ne doit pas s'afficher du tout (Je ne veux pas de filtre)
Merci
 

Pièces jointes

  • Bureau TEST.xlsx
    25.4 KB · Affichages: 24

mapomme

XLDnaute Barbatruc
Bonjour @jip31, @chris, @Hasco :)

Une autre manière en VBA. Le tableau de la feuille "Suivi" se met à jour quand on sélectionne cette feuille.

Le code est dans le module de la feuille "Suivi" :
VB:
Private Sub Worksheet_Activate()
Dim t, i&, n
   t = Intersect(Sheets("Recap").Range("a1").ListObject.DataBodyRange, Sheets("Recap").Columns("a:n"))
   ReDim r(1 To 1 + 2 * Sheets("Recap").Range("a1").ListObject.ListRows.Count, 1 To 6)
   For i = 1 To UBound(t)
      If t(i, 9) = "Guich" And t(i, 10) Like "*Applicatifs*" Then
         n = n + 1
         r(n, 1) = t(i, 5): r(n, 2) = t(i, 6): r(n, 3) = t(i, 7): r(n, 4) = t(i, 8)
         r(n, 5) = t(i, 9): r(n, 6) = t(i, 10)
      End If
      If t(i, 13) = "Guich" And t(i, 14) Like "*Applicatifs*" Then
         n = n + 1
         r(n, 1) = t(i, 5): r(n, 2) = t(i, 6): r(n, 3) = t(i, 7): r(n, 4) = t(i, 8)
         r(n, 5) = t(i, 13): r(n, 6) = t(i, 14)
      End If
   Next i
   With Sheets("Suivi").Range("a1").ListObject
      Application.ScreenUpdating = False
      For i = .ListRows.Count To 1 Step -1: .ListRows(i).Delete: Next
      If n > 0 Then .ListRows.Add: .ListRows(1).Range(1, 1).Resize(n, 6) = r
   End With
End Sub
 

Pièces jointes

  • jip31- Bureau TEST- v1.xlsm
    35.3 KB · Affichages: 7
Dernière édition:
J

jip31

Guest
Bonjour @jip31, @chris, @Hasco :)

Une autre manière en VBA. Le tableau de la feuille "Suivi" se met à jour quand on sélectionne cette feuille.

Le code est dans le module de la feuille "Suivi" :
VB:
Private Sub Worksheet_Activate()
Dim t, i&, n
   t = Intersect(Sheets("Recap").Range("a1").ListObject.DataBodyRange, Sheets("Recap").Columns("a:n"))
   ReDim r(1 To 1 + 2 * Sheets("Recap").Range("a1").ListObject.ListRows.Count, 1 To 6)
   For i = 1 To UBound(t)
      If t(i, 9) = "Guich" And t(i, 10) Like "*Applicatifs*" Then
         n = n + 1
         r(n, 1) = t(i, 5): r(n, 2) = t(i, 6): r(n, 3) = t(i, 7): r(n, 4) = t(i, 8)
         r(n, 5) = t(i, 9): r(n, 6) = t(i, 10)
      End If
      If t(i, 13) = "Guich" And t(i, 14) Like "*Applicatifs*" Then
         n = n + 1
         r(n, 1) = t(i, 5): r(n, 2) = t(i, 6): r(n, 3) = t(i, 7): r(n, 4) = t(i, 8)
         r(n, 5) = t(i, 13): r(n, 6) = t(i, 14)
      End If
   Next i
   With Sheets("Suivi").Range("a1").ListObject
      Application.ScreenUpdating = False
      For i = .ListRows.Count To 1 Step -1: .ListRows(i).Delete: Next
      If n > 0 Then .ListRows.Add: .ListRows(1).Range(1, 1).Resize(n, 6) = r
   End With
End Sub
Bonjour mapomme
merci pour cette belle macro mais je ne peux pas l'utiliser car je suis sous office 365
 
J

jip31

Guest
Bonjour

Une proposition POwerQuery (intégré à Excel)

Quand le tableau RECAP évolue, Données, Actualiser Tout
Bonjour chris
je ne connaissais pas du tout power query et en regardant ton fichier onglet requête j y comprends encore moins
je vais donc regarder des tuto pour essayer de comprendre...
Concernant ta proposition c'est déjà un bon debut mais déjà j'ai 2 problèmes
1) Seule la première ligne de l'onglet "Recap" est prise en compte dans l'onglet "Suivi"
Comme on peut le voir dans l'onglet "Recap", il s'agit d'un cas de figure ou la colonne I est = "Guich" et la colonne M est aussi = "Guich"
Il est donc normal que 2 lignes soient créées dans l'onglet "Suivi"
Par contre j'ai crée 2 nouvelles lignes dans l'onglet "Recap", une avec "COB" en colonne I et l'autre avec "Guich" en colonne M et l'autre avec "Guich" en colonne I et "COB" en colonne M
Il devrait donc y avoir 2 nouvelles lignes dans l'onglet "Suivi" puisque ces 2 nouvelles lignes répondent bien à la condition (colonne I = "Guich" ou colonne M = "Guich"
2) La prise en compte d'une ligne dans l'onglet "Suivi" dépend de la valeur présente dans "Type de panne " (colonne J et N)
Je veux dire que même si la colonne I = "Guich" ou colonne M = "Guich", il ne faut pas forcément la copier dans l'onglet "Suivi"? Cela dépend en effet des valeurs en colonne J ou N
2 cas de figure :
- Imaginons que l'on ait juste "WIFI" en colonne J ou N, la ligne ne doit pas être prise en compte dans l'onglet "Suivi" même si colonne I = "Guich" ou colonne M = "Guich"
- Imaginons que l'on ait "WIFI; Applicatifs" en colonne J ou N, alors la ligne doit être prise en si colonne I = "Guich" ou colonne M = "Guich" mais en revanche le type de panne (colonne J ou N) ne devra contenir que le mot "Applicatifs" dans le type de panne
Pour info, il y aura un 2 eme fichier identique au premier et du coup dans ce cas de figure si colonne I = "Guich" ou colonne M = "Guich" et clonne J ou N="WIFI; Applicatifs" alors dans le fichier 1, il devra y avoir "Guich" en colonne I ou M et "Applicatifs" en colonne J ou N et dans le fichier 2 "Guich" en colonne I ou M et "WIFI" en colonne J ou N
Bref c'est super compliué je sais mai si power query savait faire ca se serait top!!
merci
 

Pièces jointes

  • Population_Pannes_PQ V2.xlsx
    37.4 KB · Affichages: 7

mapomme

XLDnaute Barbatruc
Re @jip31 :),

belle macro mais je ne peux pas l'utiliser car je suis sous office 365
o_O o_O o_O o_O o_O

Je ne comprends pas du tout. Je dispose également de O365 et cette macro a été écrite sous O365.

Ne fonctionne-t-elle donc pas dans le classeur que j'avais joint ?

Indiquez nous le message d'erreur (copie d'écran et ligne de l'erreur).

Le nec plus ultra de votre part serait de nous joindre votre classeur (extrait de votre classeur s'il est lourd et anonymisé) pour qu'on puisse constater l'erreur et en chercher la cause.

A+ ;)



edit : bonjour @Hasco. Tu vas nous manger une petite poutine pour midi (voir ICI 😜 ou bien la version du riche ICI) 😄
 
Dernière édition:

chris

XLDnaute Barbatruc
Bonjour à tous

1) Seule la première ligne de l'onglet "Recap" est prise en compte dans l'onglet "Suivi"
Comme on peut le voir dans l'onglet "Recap", il s'agit d'un cas de figure ou la colonne I est = "Guich" et la colonne M est aussi = "Guich"

Sur ce point je ne comprends pas : il n'y a qu'une ligne dans RECAP sur le fichier que tu as fourni (ce que nous déplorions comme dit par Hasco) et la colonne I contient COB et non Guich

Pour l'autre condition effectivement j'ai mal lu mais la proposition de Hasco la respecte

Comme on ne cesse de la répéter il faut un fichier représentatif (une ligne cela ne l'est pas ) et les explications détaillées dès le départ...
 

job75

XLDnaute Barbatruc
Bonjour le fil, le forum,

Dans le titre de cette discussion on parle de "formule matricielle complexe", voyez le fichier joint.

Les formules de la feuille "Suivi" sont assez simples grâce aux noms définis Test1 Test2 Lig.

En outre les 2 colonnes "Population impactée2" et 'Type de panne2" ont été ajoutées.

Il serait possible de continuer avec Test3, "Population impactée3" et 'Type de panne3", etc...

A+
 

Pièces jointes

  • Bureau TEST(1).xlsx
    28.9 KB · Affichages: 5
J

jip31

Guest
Bonjour à tous



Sur ce point je ne comprends pas : il n'y a qu'une ligne dans RECAP sur le fichier que tu as fourni (ce que nous déplorions comme dit par Hasco) et la colonne I contient COB et non Guich

Pour l'autre condition effectivement j'ai mal lu mais la proposition de Hasco la respecte

Comme on ne cesse de la répéter il faut un fichier représentatif (une ligne cela ne l'est pas ) et les explications détaillées dès le départ...
Je comprends mais c'est pour ca que j'ai envoyé un nouveau fichier dans le message précédent
 

Pièces jointes

  • Population_Pannes_PQ V2.xlsx
    37.4 KB · Affichages: 5
J

jip31

Guest
Bonjour à tous,

Une autre proposition Power Query à tester.

Cordialement
Bonjour et merci
mais il y a un problème sur la ligne 3 de l'onglet "Recap" qui correspond à la ligne 6 de l'onglet "Suivi" puisque ce qui est récupéré c'est "COB" en colonne I au lieu de "Guich" en colonne M (je ne veux récupérer que les lignes avec "Guich" sous réserve que la condition sur le type de panne soit respectée
Autre question : comme je fais plein de tests et que j'insère du coup de nouvelles lignes dans l'onglet "Recap", il n'y a pas la possibilité de modifier la plage "Data" dans le gestionnaire de noms?
1667212231418.png

merci
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

La plage Data est un tableau structuré qui normalement s'étend automatiquement !
Les lignes que vous avez ajoutées sont hors de ce tableau.
cliquez dans une cellule sous la ligne d'entête du tableau. (ligne 2)
Un onglet apparaît à droite du ruban 'Création de tableau'
A gauche de cet onglet, sous la zone où apparaît le nom du tableau 'Data' vous avez un bouton 'Redimensionner' le tableau. Cliquez et modifiez le numéro de dernière ligne (6) du tableau.

Voyez ce tutoriel sur les tableaux structurés :

J'ai testé la requête, sans modification, que je vous ai donnée précédemment sur vos nouvelles lignes.

- Imaginons que l'on ait "WIFI; Applicatifs" en colonne J ou N, alors la ligne doit être prise en si colonne I = "Guich" ou colonne M = "Guich" mais en revanche le type de panne (colonne J ou N) ne devra contenir que le mot "Applicatifs" dans le type de panne

Personnellement ce genre de phrase qui dit une chose et son contraire est pour moi incompréhensible à 100% . Après lecture je ne sais toujours pas si Type de panne peut contenir "WIFI;Applicatifs" ou seulement "Applicatifs". Le début de la phrase dit l'un, la fin dit l'autre !?


Alors voyez dans le fichier si le test de la requête fonctionne (étape de filtrage), sinon, modifiez le à votre guise.

S'il faut remplacer les valeurs de la colonne "Type de panne" par uniquement "Applicatifs" , regardez comment est créée la ligne de remplacement pour les valeurs de la colonne "Population impactée".

Essayez également de normaliser vos titres de colonnes "Type de panne 2" est différent de "Type de panne2"
Enfin sachez que Power Query est sensible à la casse "GUICH" est différent de "Guich"

Pour moi je m'arrêterai là.
 

Pièces jointes

  • PQ_Bureau_TEST_2.xlsx
    40.9 KB · Affichages: 4

Discussions similaires

Réponses
5
Affichages
442
J
Réponses
4
Affichages
662
J

Statistiques des forums

Discussions
315 133
Messages
2 116 602
Membres
112 801
dernier inscrit
Yaz113