XL 2010 Recherche inversé dans tableau

anna59

XLDnaute Nouveau
Bonjour,

J’ai récupéré ce fichier ou le code VBA permet de récupéré avec une fonction, selon le non dans le tableau, il récupère l’entête de la ligne et de la colonne.

Or, ce que j'ai besoin c'est : si la valeur correspond, je voudrais l'entête de colonne et le chiffre qui correspond au croisement des deux entêtes

Pourriez-vous m'aider ?
 

Pièces jointes

  • RDV.xlsm
    12.5 KB · Affichages: 30

soan

XLDnaute Barbatruc
Inactif
Bonjour anna,

ton fichier en retour. :)

VB:
Option Explicit

Function NOUV(jour$) As String
  Application.Volatile
  If Not IsDate(jour) Then Exit Function
  Dim cel As Range, co1%, co2%, col%, lg1&, lig&, s1$, s2$, k%
  With Worksheets("Totaux")
    With .ListObjects("Tableau4")
      If .DataBodyRange Is Nothing Then Exit Function
      With .Range.Cells(1): lg1 = .Row: co1 = .Column: End With
      k = .ListColumns.Count + co1 - 1: co2 = co1 + 1
    End With
    Do While Val(.Cells(lg1, co2)) = 0 And co2 <= k: co2 = co2 + 1: Loop
    co2 = co2 - 1: Set cel = .Columns(co1).Find(jour, , -4163, 1, 1)
    If cel Is Nothing Then Exit Function
    lig = cel.Row: co1 = co1 + 1
    For col = co1 To co2
      s1 = .Cells(lig, col)
      If Val(s1) <> 0 Then s2 = s2 & .Cells(lg1, col) & " " & s1 & " / "
    Next col
    If s2 <> "" Then s2 = Left$(s2, Len(s2) - 3)
    NOUV = s2
  End With
End Function

soan
 

Pièces jointes

  • NBRDV.xlsm
    78.4 KB · Affichages: 7

anna59

XLDnaute Nouveau
les valeurs ne sont pas prises :confused:

Pour un peu plus des difficultés,
je t'ai rajouté le pourquoi dans le cas ou mon tableau aurait des formules dans chaque cellule, alors la fonction prendra l'entête et ajouterait aussi les cases avec 0 ; exemple : muriel 2 / nathan 8 / mikael 0 »
 

Pièces jointes

  • NBRDV (2).xlsm
    63.7 KB · Affichages: 3

soan

XLDnaute Barbatruc
Inactif
@anna59

je n'ai rien changé dans le code VBA ; j'ai supprimé les formules matricielles de D7: D11 ; de D7 à D11, j'ai saisi successivement 1/1 à 5/1 (1er janvier 2021 à 5 janvier 2021) ➯ en E7:E11 : valeurs correctes.


si tu veux aussi les zéros, il te suffit de remplacer :

If Val(s1) <> 0 Then s2 = s2 & .Cells(lg1, col) & " " & s1 & " / "

par :

s2 = s2 & .Cells(lg1, col) & " " & s1 & " / "


je sais pas trop ce que tu as voulu faire avec tes formules matricielles, mais de toutes façons : a) j'm'y connais mal en formules matricielles ; b) si vraiment tu as besoin de formules matricielles, je laisse le soin à un autre intervenant qui s'y connaît bien là-dessus de t'aider davantage ; bonne chance ! 🍀

soan
 

Pièces jointes

  • NBRDV v2.xlsm
    62.8 KB · Affichages: 6

anna59

XLDnaute Nouveau
quand j'active la modificaltion il me fait ça :
1619621592750.png


quand j'active le contenue :

1619621693417.png




😒😒
 

soan

XLDnaute Barbatruc
Inactif
@anna59

pour l'instant, ma fonction NOUV() marche très bien s'il n'y a pas de formules matricielles ; pour la feuille "Totaux" ; et pour le tableau structuré de cette feuille "Totaux" qui est nommé "Tableau4" ; si c'est devenu différent sur ton fichier réel, à toi de l'adapter ; mais ne change rien à tes formules matricielles si t'en as besoin ; rappel : je ne peux pas t'aider pour des formules matricielles.​

soan
 

soan

XLDnaute Barbatruc
Inactif
@anna59

là, tu es en train d'utiliser mon ancienne fonction NOUV(), du fichier "RDV v2.xlsm".

la ligne de code initiale était celle-ci :

If s1 <> "" Then s2 = s2 & Cells(b, col) & " " & s1 & " / "

pour enlever le test, il te suffit de mettre :

s2 = s2 & Cells(b, col) & " " & s1 & " / "

sans rien y changer d'autre, donc sans point . devant Cells et avec b au lieu de lg1.​



ma nouvelle fonction NOUV() est plus adaptée pour ton fichier réel (mais sans formules matricielles) ; serait-ce que tu as besoin d'une adaptation si la feuille a un autre nom que "Totaux" ou si le tableau structuré de cette feuille a un autre nom que "Tableau4" ? si oui, tu peux demander, en joignant le fichier que tu utilises actuellement.

dans le paragraphe ci-dessus, je parle de la fonction NOUV() du fichier de mon post #17.​

soan
 

soan

XLDnaute Barbatruc
Inactif
@anna59

??? si tu as besoin du fichier de mon post #17, il est toujours disponible en fichier joint : clique sur le lien bleu pour aller sur mon post #17, puis télécharge de nouveau le fichier de ce post. :)

ce serait peut-être mieux si toi tu m'envoies ton fichier actuel ? (sans données confidentielles)

attention : si c'est à cause des formules matricielles que ça marche pas, je pourrai rien y faire. 😢

soan
 

soan

XLDnaute Barbatruc
Inactif
@anna59

ton fichier en retour. :)

VB:
Option Explicit

Function NOUV(jour$) As String
  Application.Volatile
  If Not IsDate(jour) Then Exit Function
  Dim cel As Range, co1%, co2%, col%, lg1&, lig&, s1$, s2$, k%
  With Worksheets("Totaux")
    With .ListObjects("Tableau4")
      If .DataBodyRange Is Nothing Then Exit Function
      With .Range.Cells(1): lg1 = .Row: co1 = .Column: End With
      k = .ListColumns.Count + co1 - 1: co2 = co1 + 1
    End With
    Do While Val(.Cells(lg1, co2)) = 0 And co2 <= k: co2 = co2 + 1: Loop
    co2 = co2 - 1: Set cel = .Columns(co1).Find(jour, , -4163, 1, 1)
    If cel Is Nothing Then Exit Function
    lig = cel.Row: co1 = co1 + 1
    For col = co1 To co2
      s1 = .Cells(lig, col)
      s2 = s2 & .Cells(lg1, col) & " " & Val(s1) & " / "
    Next col
    If s2 <> "" Then s2 = Left$(s2, Len(s2) - 3)
    NOUV = s2
  End With
End Function

soan
 

Pièces jointes

  • NBRDV v3.xlsm
    78.4 KB · Affichages: 2

soan

XLDnaute Barbatruc
Inactif
@anna59

Image.jpg


là, je ne comprends plus :

* au début, j'avais fait sans les 0, grâce au test If Val(s1) <> 0 Then :

If Val(s1) <> 0 Then s2 = s2 & .Cells(lg1, col) & " " & s1 & " / "

* puis dans ton post #18 : tu demandes l'affichage des 0 ; ce que j'ai fait dans le fichier de mon post #27 ; et tu peux vérifier les résultats sur l'image de mon post #28 : c'est bien avec les 0.​

* puis dans ton post #29 : tu veux éviter les 0 (donc les noms qui y sont liés)

soit j'ai mal compris, soit tu sais pas trop au juste ce que tu veux... 😜
si tu ne veux pas les 0, prends le fichier de mon post #17. 🙂


soan
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 124
Messages
2 116 460
Membres
112 748
dernier inscrit
Pboiusquet