Explication code

Bonjour à tous,

j'ai besoin d'un coup demain,

le compilateur me signale une "erreur d'exécution 91 variable objet ou variable de bloc With non définie" sur lignecourante = Trouve.Row

je ne comprends pas pourquoi, quelqu'un peut il m'éclairer?

merci

oza

Sub Remplacer()
Dim lignecourante As Long
Dim Quoi As String
Dim Trouve As Range

Quoi = Range("'travail à la référence'!A27")
Set Trouve = Worksheets("données MAJ").Range("A:A").Find(Quoi, lookat:=xlWhole)
If Trouve Is Nothing Then
lignecourante = Trouve.Row       'erreur
  Application.ScreenUpdating = False

 Sheets("travail à la référence").Select
 Range("A27:B27").Select
 Selection.Copy
 Sheets("données MAJ").Select
 Range("A" & lignecourante & ":B" & lignecourante).Select
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False
 Sheets("travail à la référence").Select

 lignecourante = Worksheets("récap").Range("A65536").End(xlUp).Row + 1

 Sheets("travail à la référence").Select
 Range("A27:B27").Select
 Selection.Copy
 Sheets("récap").Select
 Range("A" & lignecourante & ":B" & lignecourante).Select
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False
 Sheets("travail à la référence").Select

 Range("C25:W25").Select
 Selection.Copy
 Sheets("récap").Select
 Range("C" & lignecourante & ":W" & lignecourante).Select
  Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False
 Sheets("travail à la référence").Select

 Sheets("travail à la référence").Select
 Range("F12").Select
 Selection.Copy
 Sheets("récap").Select
 Range("X" & lignecourante).Select
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False
 Sheets("travail à la référence").Select

 Sheets("travail à la référence").Select
 Range("A25:B25").Select
 Selection.Copy
 Sheets("récap").Select
 Range("A" & lignecourante & ":B" & lignecourante).Select
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
 :=False, Transpose:=False
 Sheets("travail à la référence").Select

 Application.ScreenUpdating = True

Else
 MsgBox "Cette référence existe déjà", vbCritical, "Alerte Application"
End If
End Sub

Bonjour

Tu veux affecter une valeur quand la variable Trouve = Nothing

Je pense que le bon code serait

If Not Trouve Is Nothing Then

suis-je bête!

bien vu! merci

Salut ozaland et le forum

Pas sûr, ne sachant pas ce qu'est prévu de faire la macro

Sub Remplacer()
Dim lignecourante As Long
Dim Quoi As String, Trouve As Range

Application.ScreenUpdating = False
Quoi = Range("'travail à la référence'!A27")
Set Trouve = Worksheets("données MAJ").Range("A:A").Find(Quoi, lookat:=xlWhole)
If Not Trouve Is Nothing Then
    lignecourante = Trouve.Row
    Sheets("travail à la référence").Range("A27:B27").Copy
    Sheets("données MAJ").Range("A" & lignecourante).PasteSpecial Paste:=xlPasteValues

    lignecourante = Worksheets("récap").Cells(Rows.Count, "A").End(xlUp).Row + 1
    Sheets("récap").Range("A" & lignecourante).PasteSpecial Paste:=xlPasteValues

    Sheets("travail à la référence").Range("C25:W25").Copy
    Sheets("récap").Range("C" & lignecourante).PasteSpecial Paste:=xlPasteValues

    Sheets("travail à la référence").Range("F12").Copy
    Sheets("récap").Range("X" & lignecourante).PasteSpecial Paste:=xlPasteValues

    Sheets("travail à la référence").Range("A25:B25").Copy
    Sheets("récap").Range("A" & lignecourante).PasteSpecial Paste:=xlPasteValues
Else
    MsgBox "Cette référence existe déjà", vbCritical, "Alerte Application"
End If
Application.ScreenUpdating = True
End Sub

A+

Rechercher des sujets similaires à "explication code"