erreur d'exécution 91 dont je ne comprends rien

sourcier08

XLDnaute Occasionnel
Bonjour à tous,

J'essaie de récupérer la valeur d'une cellule (entête) en fonction d'une valeur max d'une ligne. Seulement, je n'arrive pas à définir la plage de rechercher (une ligne précise) pour ensuite récupérer l'entête.

Je ne vois pas où est le problème et pourquoi il me renvoie donc cette erreur en me parlant de bloc with et d'objets.

Code:
Sub valeur1()
Dim Plage1 As Range, c As Range, cell As Range
Dim choix1 As Integer
Dim g As Integer

g = Sheets("saisie").Range("C2").Value

For Each cell In Sheets("saisie").Range("liste")
    
    choix1 = Sheets(cell.Value).Range("A4:A19").Find(g).Row   'qu'est-ce qui foire là ?
        
    Set Plage1 = Range("b" & choix1 & ":p" & choix1)
    Set c = Plage1.Find(Application.WorksheetFunction.Max(Plage1), LookIn:=xlValues, lookat:=xlWhole)
    If Not c Is Nothing Then MsgBox Cells(3, c.Column).Value
    
Next cell

End Sub

Merci d'avance pour l'aide.
 

Pièces jointes

  • graissage_DV.xlsm
    192.4 KB · Affichages: 38
G

Guest

Guest
Re : erreur d'exécution 91 dont je ne comprends rien

Bonjour,

Certainement que la cellule attendue par
Code:
Sheets(cell.Value).Range("A4:A19").Find(g)
n'est pas trouvée et ne peut par conséquent avoir de .Row

Initialiser une variable range l'utiliser pour le .Find et la tester.

Ne jamais croire anticiper les résultats d'une recherche ni les utiliser sans test préalable.

A+
 

sourcier08

XLDnaute Occasionnel
Re : erreur d'exécution 91 dont je ne comprends rien

Merci à tous deux.

mécano, je viens de voir ta réponse et pour toi, ce serait le format personnalisé qui poserait problème dans ma recherche ?
Je regarderai ta proposition aussi.

Pour l'heure, j'ai contourné le problème.

Code:
Dim Plage1 As Range, c As Range, cell As Range
Dim g As Integer, h As Integer, i As Integer, j As Integer
Dim d As Integer, e As Integer


g = Sheets("saisie").Range("C2").Value
h = g - 11

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

For Each cell In Sheets("saisie").Range("liste")
        
    Set Plage1 = Sheets(cell.Value).Range("b" & h & ":p" & h)
    Set c = Plage1.Find(Application.WorksheetFunction.Max(Plage1), LookIn:=xlValues)
        
    d = Sheets("Accueil").Range("B3:N27").Find(cell.Value).Row
    e = Sheets("Accueil").Range("B3:N27").Find(cell.Value).Column
    
    On Error Resume Next
    
    Cells(d, e).Offset(1, 1) = Sheets(cell.Value).Cells(3, c.Column).Value
    Cells(d, e).Offset(1, 2) = c
    
Next cell

Et tout va bien.
 
Dernière édition:

mécano41

XLDnaute Accro
Re : erreur d'exécution 91 dont je ne comprends rien

Ta cellule ne contient pas "15" mais "Semaine 15" alors, soit tu fais comme indiqué message #3, soit tu fais comme cela :

Code:
choix1 = Sheets(cell.Value).Range("A4:A19").Find(g, , , xlPart).Row

pour indiquer que "15" n'est qu'une partie du contenu de la cellule.

Cordialement
 

Discussions similaires

Réponses
28
Affichages
921
Réponses
3
Affichages
457

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof