Erreur Objet requis
Bonjour, je débute en VBA, c'est ma deuxième demande déjà avec un mois d'interval.
J'ai un code qui fais appel a un fichier qui à été fais par quelqu'un d'autre mais lorsque je le lance il me dit "Erreur objet requis" il n'y a même pas de code erreur type "404 not found"
Voilà j'aimerai savoir si vous voyez ou est l'erreur étant un padawan je ne la trouve absolument pas et la personne en charge ,à l'époque de ce projet est partie et je dois modifier le code, mais comment modifier un code si on n'arrive même pas à le faire fonctionner??
' Repart BUT
'
' Ajout des commande systématique à un export ABUT
'
' Ver 0.1
'
' 1.1 - Ajout gestion 1, 2 ou 3 modèles
Sub Repart()
Dim Export As String
Dim syst As String
Dim current As String
current = ThisWorkbook.Name
'on ouvre le fichier de commande systématique et on le mets à jour
syst = Application.GetOpenFilename("Classeurs Excel (*.xls), *.xls", 1, "Choisir le fichier le fichier de commande systematique", , False)
Workbooks.Open Filename:=syst
syst = ActiveWorkbook.Name
Dim monid, op, mod1, mod2, mod3 As String
Dim Lignefin, I, LigMag, macol As Integer
Dim magasin As String
RepartForm.Show
op = RepartForm.OPForm.Value
mod1 = RepartForm.mod1form.Value
mod2 = RepartForm.mod2form.Value
mod3 = RepartForm.mod3form.Value
If mod2 = "" And mod3 = "" Then
nbre = 1
ElseIf mod3 = "" Then
nbre = 2
Else
nbre = 3
End If
' rechercher remplacer les op, les modeles et les date de fin d op
macol = NumCol("Nom du produit")
If nbre = 1 Then
Worksheets("MATRICE 1 MODELE").Activate
Columns(macol).Replace What:="MODELE1", Replacement:=mod1, LookAt:=xlPart
masheet = "MATRICE 1 MODELE"
End If
If nbre = 2 Then
Worksheets("MATRICE 2 MODELES").Activate
Columns(macol).Replace What:="MODELE1", Replacement:=mod1, LookAt:=xlPart
Columns(macol).Replace What:="MODELE2", Replacement:=mod2, LookAt:=xlPart
masheet = "MATRICE 2 MODELES"
End If
If nbre = 3 Then
Worksheets("MATRICE 3 MODELES").Activate
Columns(macol).Replace What:="MODELE1", Replacement:=mod1, LookAt:=xlPart
Columns(macol).Replace What:="MODELE2", Replacement:=mod2, LookAt:=xlPart
Columns(macol).Replace What:="MODELE3", Replacement:=mod3, LookAt:=xlPart
masheet = "MATRICE 3 MODELES"
End If
Columns(macol).Replace What:="XXX", Replacement:=op, LookAt:=xlPart
'on retire les double espace dans les magasins
macol = NumCol("Acheteur")
Columns(macol).Replace What:=" ", Replacement:=" ", LookAt:=xlPart
Columns(macol).Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(1, macol).Value = "A/F/C"
macol = NumCol("Acheteur")
' on construit le numéro de commande avec recherche du code magasin
' on ajoute la date dans la colonne Date de la commande
Lignefin = Application.WorksheetFunction.CountA(Columns(macol))
monid = 1
For I = 2 To Lignefin
magasin = Cells(I, macol).Value
magasin = Replace(magasin, "_A", "")
magasin = Replace(magasin, "_F", "")
Workbooks(current).Activate
Sheets("Magasins").Activate
LigMag = NumLig(magasin)
If LigMag = 0 Then LigMag = 1
magasin = Cells(LigMag, 1)
Workbooks(syst).Activate
Sheets(masheet).Activate
Cells(I, 1).Value = "OP" & op & magasin & "SYS" & monid
macol = NumCol("Date de la commande")
Cells(I, 2).Value = DateValue(Now)
monid = monid + 1
Next
Dim LaCol As Integer
Dim LigneF As Long, NouvLig As Long
Dim Wbk As Workbook
Dim Sh As Worksheet
With Workbooks(syst).Worksheets(masheet) 'choix de la feuille
macol = NumCol("Acheteur")
LigneF = .Cells(.Rows.Count, macol).End(xlUp).Row
' On ouvre le fichier B et on y ajoute les ligne de A après l'avoir nettoyé
Export = Application.GetOpenFilename("Classeurs Excel (*.xls), *.xls", 1, "Choisir le fichier d export", , False)
Set Wbk = Workbooks.Open(Export)
Set Sh = Wbk.Worksheets(1)
' On efface les colonnes prix, prix unitaire
Sh.Columns(NumCol("prix")).Delete
Sh.Columns(NumCol("prix unitaire")).Delete
'On ajoute la colonne A/F/C
macolone = NumCol("Acheteur")
Columns(macolone).Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Cells(1, macolone).Value = "A/F/C"
'on ajoute les lignes du fichier A à la fin du fichier B
LaCol = NumCol("Numéro de la commande")
NouvLig = Sh.Cells(Sh.Rows.Count, LaCol).End(xlUp).Row + 1
.Rows("2:" & LigneF).Copy Sh.Range("A" & NouvLig)
Set Sh = Nothing
Set Wbk = Nothing
End With
macol = NumCol("Acheteur")
'On rempli la colonne A/F/C
Lignefin = Application.WorksheetFunction.CountA(Columns(macol))
For I = 2 To Lignefin
magasin = Cells(I, macol)
If Left(magasin, 5) = "BUT-A" Then
Cells(I, macol - 1).Value = "A"
ElseIf Left(magasin, 5) = "BUT-F" Then
Cells(I, macol - 1).Value = "F"
Else
Cells(I, macol - 1).Value = "Centrale"
End If
Next
Columns(macol).Replace What:="-A", Replacement:="", LookAt:=xlPart
Columns(macol).Replace What:="-F", Replacement:="", LookAt:=xlPart
dercol = NumCol("Code postal de la facture")
macol = NumCol("Société de la facture")
For I = dercol To macol Step -1
Columns(I).Delete
Next
SourceSheet = ActiveSheet.Name
colProd = NumCol("Nom du produit")
colQuant = NumCol("Qté commandée")
Cells.Select
Cells.EntireColumn.AutoFit
Lignefin = Application.WorksheetFunction.CountA(Columns(NumCol("Acheteur")))
Sheets.Add.Name = "Recap"
Cells(1, 1).Value = "Produit"
Cells(1, 2).Value = "Quantité"
For I = 2 To Lignefin
Sheets(SourceSheet).Activate
leProduit = Cells(I, colProd)
laQuantite = Cells(I, colQuant)
Sheets("Recap").Activate
laLigne = NumLig1(leProduit)
If laLigne = O Then
LaFin = Application.WorksheetFunction.CountA(Columns(1))
Cells(LaFin + 1, 1).Value = leProduit
Cells(LaFin + 1, 2).Value = laQuantite
Else
Cells(laLigne, 2).Value = Cells(laLigne, 2).Value + laQuantite
End If
Next
Cells.Select
Cells.EntireColumn.AutoFit
Dim Nom As String
Dim today As String
Application.DisplayAlerts = False
Workbooks(syst).Close
today = Replace(DateValue(Now), "/", "_")
Path = "C:\ResultatsMacros\"
If Len(Dir(Path, vbDirectory)) = 0 Then
MkDir (Path)
End If
Nom = Path & "REPART_" & op & "_" & today & ".xls"
ActiveWorkbook.SaveAs (Nom)
Application.DisplayAlerts = True
Fin:
MsgBox ("Traitement terminé")
End Sub
Public Function NumCol(Texte As String) As Integer
On Error GoTo ErrNumCol
NumCol = Rows(1).Find(Texte, LookIn:=xlFormulas, LookAt:=xlWhole, SearchFormat:=False).Column
Exit Function
ErrNumCol:
NumCol = 0
End Function
Public Function NumLig(Texte) As Integer
On Error GoTo ErrNumLig
NumLig = Columns(2).Find(Texte, LookIn:=xlFormulas, LookAt:=xlWhole, SearchFormat:=False).Row
Exit Function
ErrNumLig:
NumLig = 0
End Function
Public Function NumLig1(Texte) As Integer
On Error GoTo ErrNumLig1
NumLig1 = Columns(1).Find(Texte, LookIn:=xlFormulas, LookAt:=xlWhole, SearchFormat:=False).Row
Exit Function
ErrNumLig1:
NumLig1 = 0
End Function
Merci de votre aide !!!!
Bonjour,
sur quelle instruction as-tu l'erreur ?
Eh bien il y a juste un pop-up qui apparait en disant le message d'erreur et lorsque je clique ok rien ne se passe sa affiche mon fichier comme si il l'avait traité mais ce n'est pas le cas !
Edit: Il vient de m'afficher le débogage et c'est la ligne "Repartform.show"
bonjour,
vérifie que le userform "repartform" existe bien
Excusez moi du temps ... J'étais partis en formation et avait complètement oublier ca!
Comment ca vérifier? C'est sensé etre une autre maccro ou une page ?
bonsoir,
c'est censé être un userform
faire alt-F11 pour ouvrir l'editeur VBA
vérifier la présence du userform repartform
Je ne vois absolument pas de quoi vous parlez si je vous transmet les fichiers nécessaires vous pensez que vous pourriez me montrer ?
J'ai besoin de le faire fonctionner et je n'y arrive absolument pas !