Question concernant un SI Macro Excel

Résolu
Martin -  
 Martin -
Bonjour,

quelqu'un peut me dire pourquoi j'obtiens une erreur 13 dans ce code ?

 If ShtR.Range("A2:A1000") = ShtN.Range("h20").Value Then
ShtR.Range("C").Value = ShtN.Range("F3")


Je veux que si le range A2:A1000 (fichier 1) contient la valeur de la cellule h20 (fichier 2), la cellule C de la même ligne que la valeur trouvée en h20 devienne la valeur F3 de mon fichier 2.

Merci de votre aide ! :)

Maritn
A voir également:

3 réponses

ccm81 Messages postés 11033 Statut Membre 2 433
 
bonjour
essaies ceci

Const plage = "A2:A24"
Dim shtR
Dim c
Dim li As Long
Set shtR = Sheets(1)
With shtR
  Set c = .Range(plage).Find(.Range("h20"), , , xlWhole)
  If Not c Is Nothing Then
    li = c.Row
    .Range("C" & li).Value = .Range("F3")
  End If
End With

bonne suite
0
Martin
 
il n'y a pas d'erreur dans le code, mais le changement ne s'effectue pas... voici mon code au complet

Dim sFicRegistre    As String
Dim sPathRegistre   As String
Dim WbkR            As Object
Dim shtR            As Worksheet
Dim ShtN            As Worksheet
Dim Desc            As String
Dim Nom_Fichier, Chemin, modif
Dim li              As Long
  

  sFicRegistre = "Registre.xlsm"
  sPathRegistre = "C:\PO\"
  Set ShtN = ThisWorkbook.Sheets("PO")

  Set WbkR = GetObject(sPathRegistre & "\" & sFicRegistre)
  Set shtR = WbkR.Sheets("Registre")
  
  Const plage = "A2:A1000"
  Desc = ShtN.Range("B19").End(xlUp)
    
  With shtR
  Set modif = .Range("A2:A1000").Find(.Range("h20"), , , xlWhole)
  If Not modif Is Nothing Then
  li = modif.Row
  .Range("D" & li).Value = .Range("G19")
  

End If
End With
End Sub
0
Martin
 
j'ai trouvé, merci ! :)

voici mon code :

Private Sub CommandButton1_Click()
Dim sFicRegistre    As String
Dim sPathRegistre   As String
Dim WbkR            As Object
Dim shtR            As Worksheet
Dim ShtN            As Worksheet
Dim Desc            As String
Dim Nom_Fichier, Chemin, modif
Dim li              As Long
  

  ' Définir les variables
  sFicRegistre = "Registre.xlsm"
  sPathRegistre = "P:\PO\"
  Set ShtN = ThisWorkbook.Sheets("PO")
  ' Ouvrir le classeur en OLE
  Set WbkR = GetObject(sPathRegistre & "\" & sFicRegistre)
  Set shtR = WbkR.Sheets("Registre")
  
  Const plage = "A2:A1000"
  Desc = ShtN.Range("B19").End(xlUp)
    
  With shtR
  Set modif = .Range("A2:A1000").Find(ShtN.Range("h20"), , , xlWhole)
  If Not modif Is Nothing Then
  li = modif.Row
  .Range("D" & li).Value = .Range("G19")
  WbkR.Windows(1).Visible = True
  WbkR.Close savechanges:=True
  Application.ScreenUpdating = True
  
End If
End With
End Sub
0