Macro création liste
Oups ! Je viens de faire une mauvaise manip sur ce post et j'ai effacé ce qui était écrit.
Désolée
Nad
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
tu écris à Nad:
Ta macro supprime l'ensemble des données de la feuille "SAISIE" après enregistrement. Il ne faut pas les supprimer!
il faut bien effacer les cases jaunes des lignes acceptées (sans doublons), non ?
sinon comment savoir ce qui à été enregistré ?
Je maintiens qu'il serait + sûr et + simple de ne traiter qu'une seule ligne
je ne vois toujours pas l'intérêt de saisir 3 ou 4 lignes
à te relire
Claude
Comment savoir ce qui a été enregistré ?
Première méthode :
on vérifie si un des trois codes est présent dans la base de données et on colle les trois lignes en même temps.
Pas besoin de supprimer, au contraire, si après l'enregistrement on se rend compte qu'une valeur n'est pas bonne, on peut prévenir un responsable. Si elles sont effacées, plus de contrôle possible.
Deuxième méthode :
Pareil mais on le fait ligne par ligne : dans ce cas, la suppression des lignes qui ont été copiées nous permet de voir lesquelles ne l'ont pas été.
Mais par contre, comme je ne suis pas très bon en lanquage VBA pour le moment, si je souhaite rajouter une ligne plus tard, ou même plusieurs, je ne saurais pas comment modifier le code. Donc mon fichier sera figé même si je souhaite le modifier.
Troisième méthode :
je viens de penser à ça : la macro reprend chaque code un par un pour vérifier s'ils sont ou non dans la base de données. Ensuite, 2 solutions possibles ->
1 - Aucun code n'est présent dans la base : on copie-colle l'ensemble du tableau.
2 - Un ou plusieurs codes sont présents dans la base : on ne copie rien et un message d'erreur apparait "ERREUR : Les données pour cette journée sont déjà enregistrées dans la base de données."
Je maintiens qu'il serait + sûr et + simple de ne traiter qu'une seule ligne
je ne vois toujours pas l'intérêt de saisir 3 ou 4 lignes
J'ai besoin de l'ensemble des données quotidiennes dans ma base de données pour obtenir un maximum de précision.
Une seule ligne = "moyenne" de 011, 021 et 031.
Trois lignes = les données pour 011, les données pour 021 et les données pour 031.
Nad :
Ta macro supprime l'ensemble des données de la feuille "SAISIE" après enregistrement. Il ne faut pasles supprimer!
Il me semblait judicieux de préparer la feuille SAISIE à une nouvelle saisie puisque de toute façon les mêmes données ne doivent pas être enregistrées.
Il suffit d'enlever cette partie en bas de la macro :
With Sheets("SAISIE")
.Activate
.Range("B6:J8").ClearContents
End WithNad
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Nad,
Notre ami me semble un peu "tordu" dans ses raisonnements !
Je lui fait dans la soirée un nouveau code à mon idée et basta !!
Amicalement
Claude
-- Mer Juin 02, 2010 8:35 pm --
Bonsoir à tous,
Sub Enregistrement()
Dim Lg%, Rep%, x%, i%
Dim Sh$, Cpt As Byte
'Macros par Claude Dubois pour "bclement" Excel-Pratique le 2 Juin 2010
Lg = Range("a65536").End(xlUp).Row
Sh = Sheets("BASE DE DONNEES").Name
Range("a6:a" & Lg).Interior.ColorIndex = xlNone
'--- contrôle
For i = 6 To Lg
If Application.CountIf(Sheets(Sh).Range("a:a"), Cells(i, 1)) > 0 Then
x = Application.Match(Cells(i, 1), Sheets(Sh).Range("a:a"), 0)
MsgBox (Cells(i, 1) & " ce code existe déjà dans la base !" & Chr(10) & "ligne " & x)
Cells(i, 1).Interior.ColorIndex = 3
Cpt = Cpt + 1
End If
Next i
If Cpt > 0 Then
MsgBox ("Données non enregistrées")
Exit Sub
End If
'--- fin contrôle
Range("a6:n" & Lg).Select
Rep = MsgBox("Confirmer l'enregistrement dans la base de données ?", vbYesNo + vbCritical + vbDefaultButton2, "Enregistrement")
If Rep = vbYes Then
Range("a6:n" & Lg).Copy
With Sheets("BASE DE DONNEES")
.Range("a65536").End(xlUp)(2).PasteSpecial Paste:=xlPasteValues
End With
Application.CutCopyMode = False
MsgBox ("Données enregistrées")
Else
MsgBox ("Données non enregistrées")
End If
Range("a1").Activate
End SubMacro valable sans limitation de lignes à saisir
Amicalement
Claude
Merci Claude pour ton aide, ta macro marche très bien.
Et excusez moi pour l'embêtement, j'avoue que mon projet évoluait tous les jours et que par conséquent, ma première demande était assez basique par rapport à ce dont j'avais besoin au final.
Merci à tous!