Macro - Erreur d'exécution

DesertStorm

XLDnaute Nouveau
Bonjour,

Merci de m'aider à optimiser mon code VBA ci-dessous.
Actuellement il m'affiche une erreur d'exécution : 1004 au niveau de la ligne "Selection.Offset(1, 0).Select"


Dim MyDataInventaire, MyDataInventaireHead, MyDataStock As Object
Dim mycol, myrow, i, j As Long
Dim rg As Variant
Dim reponse As Integer
Dim anneesel, moissel, moisannee As String
Set MyDataHead = Sheets("Inventaire").Range("B3").CurrentRegion
anneesel = MyDataHead.Range("C2")
moissel = MyDataHead.Range("B2")
If anneesel = "" Or moissel = "" Then
MsgBox "Merci de selectionner le mois et/ou l'année !", vbCritical, "Informations"
Else
Set MyDataStock = Sheets("Stock").Range("A1").CurrentRegion
moisannee = moissel & "/" & anneesel
Set rg = MyDataStock.Range("A1:A10000").Find(moisannee, MyDataStock.Range("A1"), LookIn:=xlValues, LookAt:=xlPart)
If Not rg Is Nothing Then
MsgBox "Un Inventaire a déja été défini pour cette période. Merci de selectionner une autre période !", vbCritical, "Informations"
Else
reponse = MsgBox("Voulez vous vraiment enregistrer cet inventaire ?", vbYesNo + vbQuestion, "Confirmation")
If reponse = vbYes Then

Set MyData = Sheets("Inventaire").Range("C7").CurrentRegion
mycol = MyData.Columns.Count
myrow = MyData.Rows.Count
Sheets("Stock").Activate
Range("A2").Select
Selection.End(xlDown).Select
For i = 2 To myrow - 1
For j = 2 To mycol - 1
If MyData(i, j) <> 0 Then
Selection.Offset(1, 0).Select
ActiveCell.Offset(0, 1).Value = moisannee
ActiveCell.Offset(0, 2).Value = MyData(1, j)
ActiveCell.Offset(0, 3).Value = MyData(i, 1)
ActiveCell.Offset(0, 4).Value = MyData(i, j)
End If
Next j
Next i
MsgBox "Inventaire enregistré avec succès !", vbInformation, "Informations"
restaurer_configuration
End If
End If
End If
 

Staple1600

XLDnaute Barbatruc
Bonsoir

DesertStorm
Je te laisse trouver ce que j'ai changé et/ou ajouté ;)
VB:
Sub AjouterInventaireV2()
Dim MyData, MyDataHead, MyDataStock As Object, MyDataSave As Object
Dim mycol&, myrow&, i&, j&, rg, reponse As Integer
Dim anneesel$, moissel$, moisannee$
Set MyDataHead = Sheets("Inventaire").Range("B3").CurrentRegion
With MyDataHead
anneesel = .Range("C2"): moissel = .Range("B2")
End With
If anneesel = "" Or moissel = "" Then
MsgBox "Merci de selectionner le mois et/ou l'année !", vbCritical, "Informations"
Else
Set MyDataStock = Sheets("Stock").Range("A1").CurrentRegion
moisannee = moissel & "/" & anneesel
Set rg = MyDataStock.Range("A1:A10000").Find(moisannee, MyDataStock.Range("A1"), LookIn:=xlValues, LookAt:=xlPart)
If Not rg Is Nothing Then
MsgBox "Un Inventaire a déja été défini pour cette période. Merci de selectionner une autre période !", vbCritical, "Informations"
Else
reponse = MsgBox("Voulez vous vraiment enregistrer cet inventaire ?", vbYesNo + vbQuestion, "Confirmation")
If reponse = vbYes Then
Set MyData = Sheets("Inventaire").Range("C7").CurrentRegion
mycol = MyData.Columns.Count
myrow = MyData.Rows.Count
Application.ScreenUpdating = False
Sheets("Stock").Activate
Cells(Rows.Count, 1).End(3).Select
For i = 2 To myrow - 1
For j = 2 To mycol - 1
If MyData(i, j) <> 0 Then
Selection.Offset(1, 0).Select
ActiveCell.Offset(0, 1).Value = moisannee
ActiveCell.Offset(0, 2).Value = MyData(1, j)
ActiveCell.Offset(0, 3).Value = MyData(i, 1)
ActiveCell.Offset(0, 4).Value = MyData(i, j)
End If
Next j
Next i
MsgBox "Inventaire enregistré avec succès !", vbInformation, "Informations"
End If
End If
End If
End Sub
 

Discussions similaires

Réponses
11
Affichages
306

Membres actuellement en ligne

Statistiques des forums

Discussions
312 361
Messages
2 087 626
Membres
103 609
dernier inscrit
AmineAB33