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.