VBA: figer des données

Bonjour,

j'ai un document composé de 3 feuilles.

Les données de la feuille "zone" changent selon les besoins.

j'aimerais que certaines de ces données se figent dans ma feuille "Base de données":

* colonne "Date" reprend la date de la cellule G28 de la feuille "zone"

* colonne Code Colis reprend le code de la cellule C5 de la feuille "zone"

* colonne Réf Produit reprend les références des cellules de C33 à C38 de la feuille "zone"

* colonne Qté reprend les quantité des cellules de D33 à D38 de la feuille "zone"

Pour cela j'ai réalisé une macro. La voilà:

Sub Figer_les_données()
'------------------------------------------------
Dim QtéR As Integer, QtéRupt As Integer, nblignes1 As Integer
QtéR = 33
QtéRupt = 2
nblignes1 = WorksheetFunction.CountA(Range("D33:D38"))
'
Dim RéfR As Long, RéfRupt As Long, nblignes2 As Integer
RéfR = 33
RéfRupt = 2
nblignes2 = WorksheetFunction.CountA(Range("C33:C38"))
'
Dim ColisRupt As Long
ColisRupt = 2
'
Dim DateRupt As Date
DateRupt = 2
'-----------------------------------------------
'
For i = QtéR To QtéR + nblignes1
  Sheets("zone").Cells(i, 4).Copy
  Sheets("Base de données").Cells(QtéRupt, 4).Insert
Next i

For i = RéfR To RéfR + nblignes2
  Sheets("zone").Cells(i, 3).Copy
  Sheets("Base de données").Cells(RéfRupt, 3).Insert
Next i

  Sheets("zone").Cells(5, 3).Copy
  Sheets("Base de données").Cells(RéfRupt, 2).Insert

  Sheets("zone").Cells(28, 7).Copy
  Sheets("Base de données").Cells(DateRupt, 1).Insert

Range("plage1").Font.Size = 14
Range("plage1").Font.Bold = False

End Sub

PROBLÈMES:

--> j'aimerais juste avoir la valeur dans la colonne quantité, et non la formule

--> j'aimerais enlever les lignes vides entre les données copiées

--> j'aimerais que les données ne soient pas éparpillées dans mon tableau, qu'une date correspondent à un code colis, qui correspond à une réf produit, qui correspond à une quantité.

Pouvez-vous m'aider à revoir ma macro svp

Bonjour

A vérifier

Merci Banzai64,

je viens de tester ton document, mais ça ne me va pas: ça me met bien les données que je veux dans la feuille 2, et correctement, mais si je change une donnée dans la feuille "zone" et que je clique sur le bouton, ça change les données sur la feuille "Base de données", alors que j'aimerais que ça s'ajoute.

je ne sais pas si tu comprend ce que j'aimerais faire...^^

Et aussi, quand je change le code colis, l'ordi me met un mot en me disant que l'indice n'appartient pas à la sélection.

Cdt

c'est bon pour figer les données!!^^

En cherchant j'ai réussis à figer les données!!!

voilà ce que j'ai fais:

Option Explicit
Sub Figer_les_données()
'Déclaration des variables
Dim NbLignes1 As Long, NbLignes2 As Long
'Intégrer une valeur aux variables
NbLignes1 = WorksheetFunction.CountA(Range("C33:C38"))
NbLignes2 = WorksheetFunction.CountA(Sheets("Base de données").Range("C:C"))

  Application.ScreenUpdating = False
  'Copier et coller les cellules
  Range("C33:D" & 32 + NbLignes1).Copy
  With Sheets("Base de données")
    .Cells(NbLignes2 + 1, 3).PasteSpecial Paste:=xlPasteValues
    .Cells(NbLignes2 + 1, 2).Resize(NbLignes1) = Range("C5")
    .Cells(NbLignes2 + 1, 1).Resize(NbLignes1) = Range("G28")
  End With
  'Arrêter les copier/coller
  Application.CutCopyMode = False
End Sub

Par contre je ne comprend pas pourquoi quand je change de code colis (cellule C5 de la feuille zone), j'ai un message d'erreur "l'indice n'appartient pas à la sélection".

En tout cas merci beaucoup Banzai64 pour ta macro!!!!! ça fait des semaines que je suis dessus!!!^^

Cdt

Bonjour

cindy32 a écrit :

pourquoi quand je change de code colis (cellule C5 de la feuille zone), j'ai un message d'erreur "l'indice n'appartient pas à la sélection".

Ce message vient de la procédure Worksheet_Change dans le module de la feuille "Zone"

Enlèves cette procédure

merci beaucoup!!!!!!!!

Rechercher des sujets similaires à "vba figer donnees"