M
marie
Guest
Bonjour à tous,
Je suis sur une fonction avec 2 Tableaux qui doit tester si un élèment du premier tab existe aussi dans le deuxième tab. Pour cela, j'utilise 2 boucles for each-next imbriquées. Ca marche, mais (si je vous écris, c'est qu'il y a un MAIS!), lorsque je fais next mouv1, il passe à la case suivante (c'est-à-dire à celle à la droite de mon mouv1), alors qu'il faudrait qu'il passe à la colonne suivante de mon tab1.
Ma question est donc: comment faire pour que le next aille au début de la ligne suivante et non à la cellule suivante de mon tableau. J'ai essayé des trucs avec des Offset, mais mon NEXT ne veut rien entendre. Je vous donne toute la fonction, car je ne suis pas sûre d'être très claire. D'avance merci pour vos astuces et si vous avez besoin de précisions, n'hésitez pas!
'Bouton Importer les mouvements pour faire évoluer le ptf
Sub Importation2()
Deproteger
Dim venac
Dim veneg
Dim code1
Dim code2
Dim nb1
Dim nb2
Dim nbfinal
Dim result As Boolean
Dim Plage1 As Range
Dim mouv1 As Range
Dim Plage2 As Range
Dim mouv2 As Range
Set Plage2 = Worksheets("Etat du Portefeuille").Range("A6:B150")
Sheets("Mouvements sur le ptf").Activate
On Error Resume Next
Application.DisplayAlerts = False
Set Plage1 = Application.InputBox("Sélectionnez la plage de données à insérer", "SELECTION DES DONNEES", , , , , , 8)
Application.DisplayAlerts = True
If Err <> 0 Then
Sheets("Etat du Portefeuille").Activate
Proteger
Err.Clear: Exit Sub
End If
Plage1.Select
'Pour chaque mouvement de la plage des mvts sélectionnés dans la feuille Mouvements
For Each mouv1 In Plage1
If mouv1.Value <> Vide Then
code1 = mouv1.Offset(0, 3)
venac = mouv1.Offset(0, 7)
For Each mouv2 In Plage2
n = mouv2.Value
code2 = mouv2.Offset(0, 1)
nb2 = mouv2.Offset(0, 3)
'Si les 2 codes ISIN sont égaux:
If code1 = code2 Then
' on regarde si c'est une vente
If mouv1.Offset(0, 5) = "Vente" Then
'si oui: le nb de parts devient négatif
venac = venac * (-1)
End If
'on affecte le nb de parts du mouvements au nb de parts du nv ptf
nbfinal = nb2 + venac
mouv2.Offset(0, 3) = nbfinal
Exit For
End If
result = True
Next mouv2
Else
End If
Next mouv1
Proteger
End Sub
Je suis sur une fonction avec 2 Tableaux qui doit tester si un élèment du premier tab existe aussi dans le deuxième tab. Pour cela, j'utilise 2 boucles for each-next imbriquées. Ca marche, mais (si je vous écris, c'est qu'il y a un MAIS!), lorsque je fais next mouv1, il passe à la case suivante (c'est-à-dire à celle à la droite de mon mouv1), alors qu'il faudrait qu'il passe à la colonne suivante de mon tab1.
Ma question est donc: comment faire pour que le next aille au début de la ligne suivante et non à la cellule suivante de mon tableau. J'ai essayé des trucs avec des Offset, mais mon NEXT ne veut rien entendre. Je vous donne toute la fonction, car je ne suis pas sûre d'être très claire. D'avance merci pour vos astuces et si vous avez besoin de précisions, n'hésitez pas!
'Bouton Importer les mouvements pour faire évoluer le ptf
Sub Importation2()
Deproteger
Dim venac
Dim veneg
Dim code1
Dim code2
Dim nb1
Dim nb2
Dim nbfinal
Dim result As Boolean
Dim Plage1 As Range
Dim mouv1 As Range
Dim Plage2 As Range
Dim mouv2 As Range
Set Plage2 = Worksheets("Etat du Portefeuille").Range("A6:B150")
Sheets("Mouvements sur le ptf").Activate
On Error Resume Next
Application.DisplayAlerts = False
Set Plage1 = Application.InputBox("Sélectionnez la plage de données à insérer", "SELECTION DES DONNEES", , , , , , 8)
Application.DisplayAlerts = True
If Err <> 0 Then
Sheets("Etat du Portefeuille").Activate
Proteger
Err.Clear: Exit Sub
End If
Plage1.Select
'Pour chaque mouvement de la plage des mvts sélectionnés dans la feuille Mouvements
For Each mouv1 In Plage1
If mouv1.Value <> Vide Then
code1 = mouv1.Offset(0, 3)
venac = mouv1.Offset(0, 7)
For Each mouv2 In Plage2
n = mouv2.Value
code2 = mouv2.Offset(0, 1)
nb2 = mouv2.Offset(0, 3)
'Si les 2 codes ISIN sont égaux:
If code1 = code2 Then
' on regarde si c'est une vente
If mouv1.Offset(0, 5) = "Vente" Then
'si oui: le nb de parts devient négatif
venac = venac * (-1)
End If
'on affecte le nb de parts du mouvements au nb de parts du nv ptf
nbfinal = nb2 + venac
mouv2.Offset(0, 3) = nbfinal
Exit For
End If
result = True
Next mouv2
Else
End If
Next mouv1
Proteger
End Sub