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

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 With

Nad

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 Sub

Macro valable sans limitation de lignes à saisir

Amicalement

Claude

9bclement-base.zip (26.30 Ko)

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!

Rechercher des sujets similaires à "macro creation liste"