Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
305
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…