Remplacement d'une valeur dans une cellule

isa-- Messages postés 78 Date d'inscription lundi 16 septembre 2013 Statut Membre Dernière intervention 19 décembre 2024 - 19 déc. 2024 à 17:46
yg_be Messages postés 23401 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 décembre 2024 - 19 déc. 2024 à 18:42

Bonjour,

Je tente de faire une macro qui va modifier des  stocks suite à une facture.

Tout fonctionne à merveille si je fais écrire la nouvelle valeur de stock dans une colonne différente de celle de la valeur initiale. Si je tente de mettre à jour la valeur initiale (écrire dans la même cellule), ca ne fonctionne pas, cela fait le traitement non pas une fois mais autant de fois qu'il y a de lignes... Je ne comprends pas du tout

Pouvez vous m'aider ? Merci d'avance

Voici mon code :

Sub boucle()
'
' boucle Macro

Dim i As Integer
Dim ref(10)
Dim QteVendue(10)
Dim plage As Range 'plage de recherche
Dim QteStock(10) 'Quantité en stock
'compter les cellules non vides du stock
derniereligne = Cells(Rows.Count, 10).End(xlUp).row
Set plage = ThisWorkbook.Worksheets("Feuil1").Range("I1:I" & derniereligne) ' plage de recherche de la ref
Dim cell As Range
Dim cell2 As Range
Dim col
Dim row(10)
ligne = 0

For Each cell In Feuil1.Range("E1:E10") ' pour toutes les cellules non vides de la plage ref de facture
                If cell <> "" Then
                ligne = ligne + 1
                'Enregistrement des valeurs dans le tableau REFERENCE et quantité
                    For i = 0 To 10
                    ref(i) = Range("E" & i + 2)
                    ' recherche quantité vendue
                    QteVendue(i) = Range("F" & i + 2)
                    '*******************************************
        For Each cell2 In plage 'pour toutes les cellules de la feuille de stock
            If cell2.Value = ref(i) Then
            ' contruction adresse cellule stock
            row(i) = Split(cell2.Address, "$")(2)
            'quantité en stock
            QteStock(i) = Range("J" & row(i)).Value
            ' nouvelle quantité en stock
             QteStock(i) = QteStock(i) - QteVendue(i)
            ' Range("J" & row(i)).Value = QteStock(i) 'ne fonctionne pas
            Range("K" & row(i)).Value = QteStock(i) 'fonctionne mais à côté
                                        
             End If
                            
        Next
    '***************************************
            Next
                End If
Next
'MsgBox "ligne stock" & row(4)
'MsgBox "new stock " & QteStock(4)
End Sub

Voici mon fichier excel :


Windows / Firefox 133.0

A voir également:

1 réponse

yg_be Messages postés 23401 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 décembre 2024 Ambassadeur 1 557
19 déc. 2024 à 18:42

bonjour,

Je pense que tu dois supprimer la boucle "For i = 0 To 10".  Tu n'as pas besoin de tous ces tableaux ref, row, QteVendue, QteStock, et tu n'as pas besoin de i.

Pour faciliter la lecture et éviter des erreurs, il est recommandé de mettre l'indice de boucle dans le "Next": "next cell", "next cell2".

0