Test de présence ou non d'une ref dans une liste (base)

bonsoir,

merci à l'entraide et ceux qui consacrent du temps au novice comme moi.

Je contribuerai modestement sur des sujets simples à l'occasion ( humilité oblige)

j'ai une page de code qui fonctionne bien : écrire le résultat d'une fiche sur la première ligne vide de mon archive, que je publierais ci dessous. je désire tester si le rèf ( en colonne 1 de la base existe déja ou non. Si elle existe, je selectionne la ligne et je remplace par les nouvelles valeurs, si non , j'écris sur la première ligne vide du fichier.

Le fichier à une durée de vie de 1 jour, puis est archivé ailleurs. Dans la vraie vie , la rèf est du style : nom de fichier_L 1à 30_quantième_indice de 1 à n

( la présence de underscore pose t'elle un problème.

Il n'y a pas de trâces de la formule qui extrait le nom du fichier , parce que je registre en valeur systématiquement dans l'archive.

Le code écrit est celui ci ( à titre d'info) :

Sub ecrire_bonne_ligne()
'
' Macro enregistrée le 22/03/2009 par perso
'

'
    Sheets("saisie").Select
    Range("A7:d7").Select
    Selection.Copy
    Range("A10").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
  With Sheets("archive")
    Sheets("saisie").Range("a10:d10").Copy _
    Destination:=.Cells(.Cells(65536, 1).End(xlUp).Row + 1, 1)
    Selection.Copy
    Application.CutCopyMode = False

        End With
    Sheets("saisie").Select
    Range("A7").Select

End Sub

ce dernier fonctionne parfaîtement, j'ai besoin daide pour faire le test et écrire sur une ligne existante.

merci de votre retour

Bonsoir à tous,

Sub ecrire_bonne_ligne()
'Macros par Claude Dubois pour "emery jean pierre" E-P le 22/03/09
Dim Lg As Long
    Sheets("saisie").Select
        Range("A7:d7").Copy
        Range("A10").Select
        Selection.PasteSpecial Paste:=xlPasteValues
            Range("t1") = Range("a10")
            Range("s1") = "=MATCH(t1,archive!a2:a5000,0)+1"
        If IsError(Range("s1")) Then
                Range("a10:d10").Copy Destination:=[archive!A65536].End(xlUp)(2) 'à la suite
            Else
                Lg = Range("s1")
                Range("a10:d10").Copy Destination:=Range("archive!A" & Lg) 'remplace
        End If
    Application.CutCopyMode = False
    Range("A7").Select
    Range("s1:t1").ClearContents
End Sub

Amicalement

Claude.

Salut le forum

Claude avec ton expérience évite les .Select

Sheets("saisie").Select 
Range("A7:D7").Copy

A remplacer par

Sheets("saisie").Range("A7:D7").Copy

Mytå

Bonsoir Mytå,

D'accord,

sur cette macro, peux-t-on éviter d'écrire la formule en S1 ?

 Range("s1") = "=MATCH(t1,archive!a2:a5000,0)+1"

et coder directement ?

Merci

Claude.

merci pour ces réponses, cela me demande du temps pour comprendre et tester l'ensemble. J'aime bien faire varier tous les parmètre pour avoir une parâîte compréhension.

Dés que j'ai fait le tour, je vous clôture le sujet

encore merci de votre aide

Rechercher des sujets similaires à "test presence ref liste base"