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 lEt 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 Subj’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 + 1Sinon 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