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

3 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  2. 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
  3. 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