Index.Match #N/A

Calvus

XLDnaute Barbatruc
Bonjour le Forum,

Après une nuit à chercher et devenir fou, quelqu'un peut il m'expliquer pourquoi mon code ne fonctionne pas ?

J'ai mis dans l'exemple la ligne qui pose problème.
Code:
Range("V20").Value = Application.Index(Sheets("Clients").Range("B2:G5"), Application.Match(Sheets("Pilote").Range("y4"), Sheets("Clients").Range("B2:B5"), 0), 1)

Bouton en feuille Pilote

Merci.
 

Pièces jointes

  • Index Match.xlsm
    20 KB · Affichages: 43

job75

XLDnaute Barbatruc
Re : Index.Match #N/A

Re,

Je ne suis jamais dépité sinon il y a longtemps que j'aurais quitté le forum.

En paramétrant la macro vous pouvez en faire ce que vous voulez.

L'appeler comme précédemment dans une Worksheet_Change ou ici dans votre macro Click :

Code:
Sub Click()
If IsError(Application.Caller) Then Exit Sub
Dim NomShape$
NomShape = Application.Caller
'---
Recherche NomShape
End Sub

Sub Recherche(cible)
Dim col%, ncol%, t, a(), i&, n&, j%
cible = CStr(cible)
col = 7 'colonne où se fait la recherche de cible
ncol = 11 'nombre de colonnes à copier >= col
t = Sheets("Clients").[A1].CurrentRegion.Resize(, ncol + 1)
ReDim a(1 To UBound(t), 1 To ncol)
For i = 2 To UBound(t)
  If t(i, col) = cible Then
    n = n + 1
    For j = 1 To ncol
      a(n, j) = t(i, j)
    Next j
  End If
Next i
'---restitution et mise en forme---
Application.ScreenUpdating = False
With [U7] '1ère cellule, à adapter
  .Resize(Rows.Count - .Row + 1, ncol).Delete xlUp 'RAZ
End With
If n Then
  With [U7].Resize(n, ncol)
    .Value = a
    .Interior.ColorIndex = 37 'bleu
    .Borders(xlEdgeLeft).Weight = xlMedium
    .Borders(xlEdgeRight).Weight = xlMedium
    .Borders(xlEdgeBottom).Weight = xlMedium
    .Borders(xlInsideVertical).Weight = xlThin
  End With
End If
Columns.AutoFit 'ajustement largeur
End Sub
Fichier joint.

A+
 

Pièces jointes

  • Shapes Index Match(1).xlsm
    31.2 KB · Affichages: 35

Calvus

XLDnaute Barbatruc
Re : Index.Match #N/A

Re,

Job ! Merci ENORMEMENT !!! :):)
Je vais probablement supprimer l'autofit pour des raisons de confort d'affichage (mais surtout que ça décale toutes les bordures de ma carte, ce qui est assez ennuyeux, sauf pour quelqu'un qui pense se trouver à Nice alors qu'il est à Berlin ! :)), et tester plus profondément, mais pour l'instant ça fonctionne à merveille.

Je vais également attendre la retraite pour comprendre ces fichus codes !!

Et revenir pour la suite...
Ne vous planquez pas Job ! :)
 

Calvus

XLDnaute Barbatruc
Re : Index.Match #N/A

Re,

Ca fonctionne mieux en effet.

De mon coté j'avais corrigé par : Columns("U:AE").AutoFit (eh oui ! je progresse, planquez vous les gars !! :D:D

Mais j'ai un autre tableau en dessous qui joue au yoyo, alors je vais certainement m'en passer.

Merci pour tout et bonnes vacances dans le froid polaire de Normandie. Pensez bien à prendre une dizaine de parapluies également. Je penserai bien à vous, ici au chaud ! :):):)
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Index.Match #N/A

Bonjour Calvus, le forum,

On ne peut pas passer sous silence le filtre avancé :

Code:
Sub Recherche(cible)
Dim col%, ncol%, critere As Range, n&
cible = CStr(cible)
col = 7 'colonne où se fait la recherche de cible
ncol = 11 'nombre de colonnes à copier >= col
Application.ScreenUpdating = False
'---RAZ---
With [U7] '1ère cellule, à adapter
  .Resize(Rows.Count - .Row + 1, ncol).Delete xlUp
End With
'---filtre avancé---
Set critere = [T1:T2] 'où l'on veut
With Sheets("Clients").[A1].CurrentRegion.Resize(, ncol)
  critere(1) = .Cells(1, col)
  critere(2) = cible
  .AdvancedFilter xlFilterCopy, critere, [U7]
End With
critere = ""
[U7].Resize(, ncol).Delete xlUp
With [U7].Cells(1, col)
  n = Application.CountA(.Resize(Rows.Count - .Row + 1))
End With
'---mise en forme---
If n Then
  With [U7].Resize(n, ncol)
    .Interior.ColorIndex = 37 'bleu
    .Borders(xlEdgeLeft).Weight = xlMedium
    .Borders(xlEdgeRight).Weight = xlMedium
    .Borders(xlEdgeBottom).Weight = xlMedium
    .Borders(xlInsideVertical).Weight = xlThin
  End With
End If
[U7].Resize(, ncol).EntireColumn.AutoFit 'ajustement largeur
End Sub
Notez que que le filtre copie les cellules avec leurs formats (exemple Code Postal).

Fichier (2).

Bonne journée.
 

Pièces jointes

  • Shapes Index Match(2).xlsm
    31.6 KB · Affichages: 33

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 370
Messages
2 087 677
Membres
103 635
dernier inscrit
aime nguessanj