Completer les données
bonjour
cette macro consis à ajouter sur la feuille "parametrage " les lignes exitantes sur la feuille
synthèse mais pas sur la feuille parametrage
j'ai donc bricolé la macro ci-apres
Sub tableau_parametrage()
Dim tableau() As Double
Dim i As Long, j As Long, k As Long
Dim n As Long, lastrow As Long
Dim m As String
Dim tabl() As String
Dim trouve As Boolean
k = Sheets("Synthèse").Cells(65536, 1).End(xlUp).Row
lastrow = Sheets("Parametrage").Cells(65536, 1).End(xlUp).Row
ReDim tableau(lastrow - 1)
ReDim tabl(lastrow - 1)
For i = 0 To k - 6
n = worksheets("Synthèse").Cells(i + 6, 1).Value
m = worksheets("Synthèse").Cells(i + 6, 4).Value
trouve = False
For j = 0 To lastrow - 2
tableau(j) = Sheets("Parametrage").Cells(j + 2, 1).Value
tabl(j) = Sheets("Parametrage").Cells(j + 2, 2).Value
If n = tableau(j) And m = tabl(j) Then
trouve = True
End If
Next
If trouve = False Then
Sheets("Parametrage").Cells(lastrow + 1, 1).Value = n
Sheets("Parametrage").Cells(lastrow + 1, 2).Value = _
worksheets("Synthèse").Cells(i + 6, "D").Value
Sheets("Parametrage").Cells(lastrow + 1, 3).Value = _
worksheets("Synthèse").Cells(i + 6, "E").Value
lastrow = lastrow + 1
End If
Next
End Sublorsqu'on est sur la ligne i de la feuille synthèse on veux mettre dans parametrage A(i);D(i) et
E(i)
lorsque je lance la macro j'ai constament un blocage "l'indice n'appartient pas à la selection
à la ligne 152,153...
comment y remedier ?
merci bien d'avance
Bonjour
Je suppose que tes ID sont uniques pour chaque isin et libellé ?? (on ne sait jamais)
a ta réponse, je te proposerai une autre solution
dans l'attente
edit: comment sont remplies les données dans la colonne E de parametrage ?
Bonjour
je suppose que tes ID sont uniques pour chaque isin et libellé ?? (on ne sait jamais)disons que les ID peuvent changer, j’avait déjà fait un code avant avec seule condition que sur les ID et je m’étais rendu compte que les ID pouvaient changer ou se répéter .C’est la raison pour laquelle j’ai mis une condition supplémentaire sur l’isin et le libellé dans chaque ligne car ces trois conditions sont uniques pour chaque ligne
edit: comment sont remplies les données dans la colonne E de parametrage ?la feuille « paramétrage » n’a rien en colonne E c’est plutôt le libellé qui est en colonne E dans la feuille
« synthèse » .Sur la feuille « parametrage » le libellé vient en colonne C.
merci d'avance
Bonjour,
je viens de regarder la feuille "paramêtrage" colonne E il y a en header: "contrepartie" ....
tester sur 3 colonnes est + compliqué forcément; je regarde et te dis...cet aprem ou demain.
-- Mer Sep 22, 2010 11:46 am --
Re,
Voici la macro proposée (test unique sur concaténation Id, isin, libellé)
Option Explicit
Sub mettreajour()
Dim Dico As Object
Dim derlig_p As Long, lig As Long, ref As String
Dim derlig_s As Long, cptr As Long
Dim tablo
Set Dico = CreateObject("Scripting.Dictionary")
With Sheets("parametrage")
derlig_p = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
For lig = 2 To derlig_p
ref = .Cells(lig, 1) & .Cells(lig, 2) & .Cells(lig, 3) 'concaténation des 3 données==> unique
If Not Dico.exists(ref) Then: Dico.Add ref, ref
Next
With Sheets("synthèse")
ReDim tablo(3, 0)
derlig_s = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
For lig = 6 To derlig_s
ref = .Cells(lig, 1) & .Cells(lig, 4) & .Cells(lig, 5)
If Not Dico.exists(ref) Then
tablo(0, cptr) = .Cells(lig, 1)
tablo(1, cptr) = .Cells(lig, 4)
tablo(2, cptr) = .Cells(lig, 5)
tablo(3, cptr) = .Cells(lig, 6)
cptr = cptr + 1
ReDim Preserve tablo(3, cptr)
End If
Next
ReDim Preserve tablo(3, cptr - 1)
End With
Application.ScreenUpdating = False
.Cells(derlig_p + 1, 1).Resize(cptr, 4) = Application.Transpose(tablo)
End With
End Subci joint maquette
Bonjour
j’ai essayé le code il tourne bien mais me ramène dans "parametrage" les données existantes de la feuille synthèse. en fait j’ai fais le test en supposant qu’il ne manque aucune ligne sur la feuille parametrage sauf que lorsque je lance la macro, les lignes existantes aussi bien sur la feuille parametrage que sur la feuille synthèse s’ajoutes ayant le même ID ,le même isin et le même libellé
merci bien
Je viens d'essayer en copiant les éléments de la feuille synthèse colonne ID, ISIN,LIBELLE dans param^trage, ainsi,les 2 tableaux étant identiques, il ne devrait avoir aucun ajout dans la feuille paramétrage
C'est gagné, on s'arrète à la ligne 188 sans ajout.
Donc, j'ai peut-^tre mal compris ta demande ou tu as peut-être fait une fausse manip
par contre, si les 2 listes sont identiques, le compteur (cptr) est à 0 et il faut modifier la fin de la macro ainsi
End If
Next
[i]ReDim Preserve tablo(3, cptr - 1) [/i] [b]A supprimer[/b]
End With
Application.ScreenUpdating = False
If cptr > 0 Then
ReDim Preserve tablo(3, cptr - 1)
.Cells(derlig_p + 1, 1).Resize(cptr, 4) = Application.Transpose(tablo)
End If
End WithTu dis...
Merci bien ça a marché
sauf que j'ai supprimé :<span style="font-style: italic">ReDim Preserve tablo(3, cptr - 1) </span> <span style="font-weight: bold">A supprimer</span>
enfin cette ligne ne s'intaigre pas danss le code elle reste toute rouge ! du coup je sais pas si j'ai bien fait de l'enlever.