Sauvegarde des mises à jour d'une plage de cellules Excel

Bonjour à tous !,

j'espère que vous avez la forme parce que la question que je vais vous poser m'a vraiment fatigué malgré que ça va apparaître simple, alors voila :

je développe une petite application sous excel qui gère les factures, ventes, stock... j'ai besoin de créer deux fonctions dans l'onglet "palanquee" :

1- Sauvegarder : consiste à enregistrer une zone de cellules dans un autre onglet "sorties" et elle doit enregistrer cette zone après chaque modification et supprimer les ancienne valeurs --> faire une mise à jour du tableau de l'onglet "sortie" après chaque modification

2- Charger : consiste à charger les données qui se situent à l'onglet "plongee" dans le tableau : zone (A21:H60) de l'onglet "palanquee" en fonction de la date et de la rotation et si on souhaite effectuer des modifications sur la zone A21:H60 et ça va enregistrer les modifications dans l'onglet "plongee"

voila le code que j'ai fais mais ça ne fonctionne pas correctement :

Private Sub CommandButton2_Click() 'sauvegarder

Dim l As Integer, c As Integer
Dim nbl As Integer
Dim x As Integer

nbl = Sheets("sorties").Range("A" & Rows.Count).End(xlUp).Row + 1

For l = 7 To 16
    If (Sheets("Palanquee").Cells(l, 2).Value <> "") Then
        Sheets("sorties").Cells(nbl, 1).Value = Sheets("Palanquee").Cells(2, 2).Value
        Sheets("sorties").Cells(nbl, 2).Value = Sheets("Palanquee").Cells(2, 4).Value
        Sheets("sorties").Cells(nbl, 3).Value = Sheets("Palanquee").Cells(3, 4).Value
        Sheets("sorties").Cells(nbl, 4).Value = Sheets("Palanquee").Cells(3, 2).Value

        For c = 1 To 8
            Sheets("sorties").Cells(nbl, c + 4).Value = Sheets("Palanquee").Cells(l, c).Value
        Next c
    nbl = nbl + 1

    End If
Next l

Et pour la fonction "Charger" :

Private Sub CommandButton1_Click()
Application.Range("Lpalanquees").ClearContents
Application.Range("Lmoniteurs2").ClearContents
Call loadRotation
Call loadSorties
End Sub

Private Sub loadRotation()
Dim nbline As Integer, x As Integer, dlig As Integer
Dim pdate As Date
Dim ttc As Double
Dim protation As Integer

Call initColonnes

nbline = Application.Range("BDPlongees").Rows.Count
dlig = Application.Range("RPalanquee").Row + 1
pdate = Application.Range("Palanquee.date").Value
protation = Application.Range("Palanquee.rotation").Value

For x = 1 To nbline

    If (Sheets("Plongees").Cells(x, PLDate).Value = pdate) Then
        If (Sheets("Plongees").Cells(x, PLRotation).Value = protation) Then

            Sheets("Palanquee").Cells(dlig, 2).Value = Sheets("Plongees").Cells(x, PLPrenom).Value
            Sheets("Palanquee").Cells(dlig, 3).Value = Sheets("Plongees").Cells(x, PLNom).Value
            If (Sheets("Plongees").Cells(x, PLPalanquee).Value <> "") Then
                Sheets("Palanquee").Cells(dlig, 1).Value = Sheets("Plongees").Cells(x, PLPalanquee).Value
            End If
            Sheets("Palanquee").Cells(dlig, 4).Value = Sheets("Plongees").Cells(x, PLNiveau).Value
            ttc = Sheets("Plongees").Cells(x, PLPUHT).Value
            ttc = ttc + Sheets("Plongees").Cells(x, PLLocation).Value * Sheets("ref").Range("tarifLocation").Value
            ttc = ttc + Sheets("Plongees").Cells(x, PLGaz).Value
            Sheets("Palanquee").Cells(dlig, 7).Value = ttc
            Sheets("Palanquee").Cells(dlig, 8).Value = Sheets("Plongees").Cells(x, PLPaye).Value
            dlig = dlig + 1
        End If
    End If
Next x
End Sub

Private Sub loadSorties()
Dim l As Integer, c As Integer
Dim nbl As Integer, nbl2 As Integer
Dim pdate As Date
Dim protation As Integer

pdate = Application.Range("Palanquee.date").Value
protation = Application.Range("Palanquee.rotation").Value

nbl = Sheets("sorties").Range("A" & Rows.Count).End(xlUp).Row
nbl2 = 7

For l = 1 To nbl
    If (Sheets("sorties").Cells(l, 1).Value = pdate) Then
        If (Sheets("sorties").Cells(l, 2).Value = protation) Then
            For c = 1 To 8
                 Sheets("Palanquee").Cells(nbl2, c).Value = Sheets("sorties").Cells(l, c + 4).Value
            Next c
            nbl2 = nbl2 + 1
            If (nbl2 > 16) Then nbl2 = 16
        End If
    End If
Next l

End Sub

j’espère que vous allez m'aider

Merci d'avance !

Bonjour

1- Sauvegarder : consiste à enregistrer une zone de cellules dans un autre onglet "sorties" et elle doit enregistrer cette zone après chaque modification et supprimer les ancienne valeurs --> faire une mise à jour du tableau de l'onglet "sortie" après chaque modification

Une première correction ci-dessous

nbl = Sheets("sorties").Range("A" & Sheets("sorties").Rows.Count).End(xlUp).Row + 1

Sinon un fichier sans données confidentielles serait le bienvenu

Crdlt

Coucou Dan,

merci pour ta réponse

je viens de modifier la variable "nbl" (mais ça ne change pas grand chose)

je te fais suivre en PJ le fichier excel (voir onglet Palanquee)

merci

24scan-19-v4.rar (291.94 Ko)
Rechercher des sujets similaires à "sauvegarde mises jour plage"