Calvus
XLDnaute Barbatruc
Bonsoir le forum,
En train de m'arracher les cheveux depuis des heures sur un problème à la c...
Je ne comprends pas où est l'erreur, et en même temps je tourne autour.
J'ai un code qui me permet de vérifier dans une autre feuille si j'ai un solde positif ou non.
La boucle tourne sans problème.
Le hic, c'est quand je veux transférer les données trouvées sur ma feuille. Le tableau généré est alors vide..
Je vous mets le code sans le fichier, je pense que c'est inutile.
Le Msgbox avant le Next k affiche bien les différents "x"
Le Msgbox après le Next k affiche bien les différents ""
Le Resize ne fonctionne donc pas...
Merci de m'éclairer.
En train de m'arracher les cheveux depuis des heures sur un problème à la c...
Je ne comprends pas où est l'erreur, et en même temps je tourne autour.
J'ai un code qui me permet de vérifier dans une autre feuille si j'ai un solde positif ou non.
La boucle tourne sans problème.
Le hic, c'est quand je veux transférer les données trouvées sur ma feuille. Le tableau généré est alors vide..
Je vous mets le code sans le fichier, je pense que c'est inutile.
VB:
Dim occurence As Range, k As Integer
Dim t, t1()
t = Range("A20:A178")
ReDim Preserve t1(1 To UBound(t), 1 To UBound(t))
For k = 20 To UBound(t)
Set occurence = Cells(k, 3)
If k = 54 Then
k = 83
ElseIf k = 117 Then
k = 145
End If
Set stock = Feuil24.Columns(4).SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants).Find(occurence) 'stock = référence en feuille stock
If stock Is Nothing Then Exit For
Dim sorties As Range, reserve As Range, quantite As Range, firstAddress As String
Dim numcomm As Range, numcomm_trouvee As Range
Set sorties = stock.Offset(, 5)
Set reserve = stock.Offset(, 3)
Set quantite = occurence.Offset(, 2)
Set numcomm = Feuil30.[E8]
Set numcomm_trouvee = Feuil49.Columns(4).SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants).Find(numcomm) 'stock = référence en feuille stock
If Not numcomm_trouvee Is Nothing Then
If occurence = numcomm_trouvee.Offset(, 2) Then 'Si la référence en BL = ref trouvée en stock temp
If reserve > 0 And reserve >= occurence.Offset(, 2) Then 'Si reserve <> "" et reserve >= quantité en BL
If MsgBox(occurence & ", Quantité disponible en réserve, " & quantite & " / " & reserve & " alouer au BL ?", vbYesNo) = vbYes Then 'Modif du 22.11.17
Dim i As Single
For i = 4 To Feuil49.Cells(Rows.Count, 4).End(xlUp).Row
If Feuil49.Cells(i, 4) = numcomm And Feuil49.Cells(i, 6) = occurence And reserve > 0 Then
Feuil49.Cells(i, 10) = "x"
End If
Next i
sorties = sorties - occurence.Offset(, 2) ' Sorties en feuille stock = Sorties en feuille stock - la quantité en BL
reserve = reserve - occurence.Offset(, 2) ' Reserve = reserve - la quantité en BL
If reserve = 0 Then reserve = ""
' numcomm_trouvee.EntireRow.Delete
End If
Else
If reserve > 0 Then
If MsgBox(occurence & ", Quantité disponible en réserve, " & quantite & " / " & reserve & " alouer au BL ?", vbYesNo) = vbYes Then 'Modif du 22.11.17
For i = 4 To Feuil49.Cells(Rows.Count, 4).End(xlUp).Row
If Feuil49.Cells(i, 4) = numcomm And Feuil49.Cells(i, 6) = occurence And reserve > 0 And Feuil49.Cells(i, 8) <= occurence.Offset(, 2) Then
Feuil49.Cells(i, 10) = "x"
End If
Next i
sorties = sorties - reserve ' Sorties en feuille stock = Sorties en feuille stock - la quantité en RESERVE
reserve = reserve - reserve ' Reserve = reserve - la quantité en RESERVE
If reserve = 0 Then reserve = ""
' numcomm_trouvee.EntireRow.Delete
End If
End If
End If
Else
If Not numcomm_trouvee Is Nothing Then
firstAddress = numcomm_trouvee.Address
Do
Set numcomm_trouvee = Feuil49.Columns(4).FindNext(numcomm_trouvee)
If reserve > 0 And reserve >= occurence.Offset(, 2) Then 'Si reserve <> "" et reserve >= quantité en BL
If MsgBox(occurence & ", Quantité disponible en réserve, " & quantite & " / " & reserve & " alouer au BL ?", vbYesNo) = vbYes Then 'Modif du 22.11.17
For i = 4 To Feuil49.Cells(Rows.Count, 4).End(xlUp).Row
If Feuil49.Cells(i, 4) = numcomm And Feuil49.Cells(i, 6) = occurence And reserve > 0 And Feuil49.Cells(i, 8) <= occurence.Offset(, 2) Then
Feuil49.Cells(i, 10) = "x"
End If
Next i
sorties = sorties - occurence.Offset(, 2) ' Sorties en feuille stock = Sorties en feuille stock - la quantité en BL
reserve = reserve - occurence.Offset(, 2) ' Reserve = reserve - la quantité en BL
If reserve = 0 Then reserve = ""
' numcomm_trouvee.EntireRow.Delete
End If
Else
If reserve > 0 Then
If MsgBox(occurence & ", Quantité disponible en réserve, " & quantite & " / " & reserve & " alouer au BL ?", vbYesNo) = vbYes Then 'Modif du 22.11.17
For i = 4 To Feuil49.Cells(Rows.Count, 4).End(xlUp).Row
If Feuil49.Cells(i, 4) = numcomm And Feuil49.Cells(i, 6) = occurence And reserve > 0 And Feuil49.Cells(i, 8) <= occurence.Offset(, 2) Then
Feuil49.Cells(i, 10) = "x"
End If
Next i
sorties = sorties - reserve ' Sorties en feuille stock = Sorties en feuille stock - la quantité en RESERVE
reserve = reserve - reserve ' Reserve = reserve - la quantité en RESERVE
If reserve = 0 Then reserve = ""
End If
End If
End If
Loop While Not numcomm_trouvee Is Nothing And firstAddress = numcomm_trouvee.Address
End If
End If
'#####################################################
With Application: .EnableEvents = True: .Calculation = xlAutomatic: .ScreenUpdating = True: End With
If stock.Offset(, 6) < 1 Or stock.Offset(, 6) < occurence.Offset(, 2) Then t1(k, 1) = "x" 'si stock est inférieur à 1 alors mettre un x en colonne A
'#####################################################
With Application: .ScreenUpdating = False: .Calculation = xlManual: .EnableEvents = False: End With
Else
' Set stock = Feuil24.Columns(4).SpecialCells(xlCellTypeVisible).SpecialCells(xlCellTypeConstants).Find(cel) 'stock = référence en feuille stock
If stock Is Nothing Then GoTo suite
If stock.Offset(, 6) < occurence.Offset(, 2) Then t1(k, 1) = "x" 'si stock est inférieur à 1 alors mettre un x en colonne A
End If
MsgBox t1(k, 1)
Next k
suite:
For i = 1 To 5
MsgBox t1(i, 1)
Next
Range("A20").Resize(UBound(t1), 1) = t1
Le Msgbox avant le Next k affiche bien les différents "x"
Le Msgbox après le Next k affiche bien les différents ""
Le Resize ne fonctionne donc pas...
Merci de m'éclairer.