Probleme : OBJET REQUIS

MrAntonin

XLDnaute Nouveau
Bonjour,
J'ai un soucis avec mon code suivant :
VB:
Sub Importer()
Dim objShell As Object, objFolder As Object
Dim Chemin As String, Fichier As String, Feuil As String, valPlage As String

Dim i As Integer
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)

If objFolder Is Nothing Then
    MsgBox "Abandon opérateur", vbCritical, "Annulation"
Else 
    Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
    Fichier = Dir(Chemin & "*.xls")
    Do While Len(Fichier) > 0
        If Fichier <> ThisWorkbook.Name Then
            valPlage = Range(Cells(1, 1), Cells(Range("A65536").End(xlUp).Row, _
                Range("IV1").End(xlToLeft).Column)).Address
            ThisWorkbook.Names.Add "Plage", _
            RefersTo:="='" & Chemin & "[" & Fichier & "]Feuil'!" & valPlage
            With Sheets(2)
                .[valPlage] = "=Plage"
                .[valPlage].Copy
                While i <= 0
                    Sheets(1).Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
                    i = i + 1
                Wend
                    Sheets(1).Range("A" & Rows.Count).End(xlUp).Offset(0, 0).PasteSpecial xlPasteValues
            End With
        End If
        Fichier = Dir()
    Loop
End If
End Sub

Ce code permet de mettre a la suites plusieurs feuilles Excel.

Mon erreur viens de ma variable "valPlage" qui est renseignée par :
Code:
  valPlage = Range(Cells(1, 1), Cells(Range("A65536").End(xlUp).Row, _

                Range("IV1").End(xlToLeft).Column)).Address

valPlage renvoie bien la plage voulu mais au moment du .[varPlage] ="=Plage" j'ai une erreur d'exécution qui me dis "Objet requis"

Si jamais quelqu'un voit d'où vient le problème...

En vous remerciant par avance pour vos réponses,
Cordialement,
MrAntonin
 

Patrice33740

XLDnaute Impliqué
Bonjour,

Tout est dit dans l'aide (F1), ou presque :
Range.jpg

Il suffit de préciser pour la Cellule 1 que , comme pour la Cellule 2, il peut s'agir d'un objet Range.

Mais il ne s'agit ni d'un numéro de ligne, ni d'un numéro de colonne, c'est pour cela que VBA demande un objet !
 

Bebere

XLDnaute Barbatruc
bonjour valplage devrait être adresseplage
dim plage as range'object range
set plage= Range(Cells(1, 1), Cells(Range("A65536").End(xlUp).Row, _
Range("IV1").End(xlToLeft).Column))
plage.copy
.[valPlage] = "=Plage" et elle est en trop
.[valPlage].Copy peut aller si après adress tu ajoutes (0,0) qui enlève les 2 $
 

Discussions similaires

Réponses
1
Affichages
177
Réponses
0
Affichages
157

Statistiques des forums

Discussions
312 333
Messages
2 087 378
Membres
103 529
dernier inscrit
gonzi