Remplacer enregistrement si action existe

Résolu
dragoes64 Messages postés 10 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 12 août 2011 - 10 mai 2011 à 10:47
dragoes64 Messages postés 10 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 12 août 2011 - 11 mai 2011 à 10:12
Bonjour,

Le code suivant enregistre des données du formulaire Matrix vers la feuille SaveMatrix :
Dim i As Integer, FL1 As Worksheet
Set FL1 = Worksheets("SaveMatrix")
i = FL1.Range("A65536").End(xlUp).Row + 1
FL1.Cells(i, 1).Value = EditAction.IDAction
FL1.Cells(i, 2).Value = Matrix.CompilConse
FL1.Cells(i, 3).Value = Matrix.CompilFreq
FL1.Cells(i, 4).Value = Matrix.SafetyConse
FL1.Cells(i, 5).Value = Matrix.SafetyFreq
FL1.Cells(i, 6).Value = Matrix.EnviConse
FL1.Cells(i, 7).Value = Matrix.EnviFreq
FL1.Cells(i, 8).Value = Matrix.IntegrConse
FL1.Cells(i, 9).Value = Matrix.IntegrFreq
FL1.Cells(i, 10).Value = Matrix.SCEConse
FL1.Cells(i, 11).Value = Matrix.SCEFreq
FL1.Cells(i, 12).Value = Matrix.ImpactConse
FL1.Cells(i, 13).Value = Matrix.ImpactFreq
FL1.Cells(i, 14).Value = Matrix.MediaConse
FL1.Cells(i, 15).Value = Matrix.MediaFreq
FL1.Cells(i, 16).Value = Matrix.LevelCompil
FL1.Cells(i, 17).Value = Matrix.LevelCompil2
FL1.Cells(i, 18).Value = Matrix.LevelSafe
FL1.Cells(i, 19).Value = Matrix.LevelSafe2
FL1.Cells(i, 20).Value = Matrix.LevelEnvi
FL1.Cells(i, 21).Value = Matrix.LevelEnvi2
FL1.Cells(i, 22).Value = Matrix.LevelIntegr
FL1.Cells(i, 23).Value = Matrix.LevelIntegr2
FL1.Cells(i, 24).Value = Matrix.LevelSCE
FL1.Cells(i, 25).Value = Matrix.LevelSCE2
FL1.Cells(i, 26).Value = Matrix.LevelImpact
FL1.Cells(i, 27).Value = Matrix.LevelImpact2
FL1.Cells(i, 28).Value = Matrix.LevelMedia
FL1.Cells(i, 29).Value = Matrix.LevelMedia2
FL1.Cells(i, 30).Value = Matrix.ResultCompil
FL1.Cells(i, 31).Value = Matrix.ResultSafe
FL1.Cells(i, 32).Value = Matrix.ResultEnvi
FL1.Cells(i, 33).Value = Matrix.ResultIntegr
FL1.Cells(i, 34).Value = Matrix.ResultSCE
FL1.Cells(i, 35).Value = Matrix.ResultImpact
FL1.Cells(i, 36).Value = Matrix.ResultMedia
FL1.Cells(i, 37).Value = Matrix.FinalResult
Matrix.IDAction.Caption = EditAction.IDAction.Caption

Je voudrais savoir comment faire pour remplacer l'enregistrement si IDAction (numéro de l'action) existe déja dans la feuille.
Pour le moment sa ne fait que rajouter une ligne.

Merci de votre aide

4 réponses

dragoes64 Messages postés 10 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 12 août 2011
11 mai 2011 à 10:12
C bon j'ai trouvé, voici le code pour ceux que sa peut aider :

Il faut remplacer :
i = FL1.Range("A65536").End(xlUp).Row + 1
par

With FL1
On Error Resume Next
Set Mytitle = .Columns("A:A").Find(What:=EditAction.IDAction, LookAt:=xlWhole)
If Mytitle Is Nothing Then
i = .Range("A65536").End(xlUp).Row + 1
Else
.Range(Mytitle.Row, Mytitle.Row + 37).ClearContents
i = Mytitle.Row
End If
On Error GoTo 0
End With


Voila
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 mai 2011 à 13:26
Salut

Il faut d'abord faire une recherche de cet IDAction.
Voir ma http://www.vbfrance.com/forum/sujet-REMPLIR-FORMULAIRE-AVEC-DONNEES-CONTENUES-DANS-FEUILLE-EXCEL_1519613.aspx à ce sujet

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
dragoes64 Messages postés 10 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 12 août 2011
10 mai 2011 à 13:41
Re

Je ne vois pas comment tu fais pour voir si l'action existe (je dois pas bien voir sans doute)
J'aimerais aussi savoir comment on fait pour remplacé la ligne quand elle existe

Pour répondre à tes questions ,formulaire c'est des user form et mes données sont stockées en lignes et les champs en colonne

Merci
0
dragoes64 Messages postés 10 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 12 août 2011
11 mai 2011 à 08:39
Bonjour,

Quelqu'un aurait-il une solution car là je suis un peu perdu ?

Merci
0
Rejoignez-nous