Parcourir des cellules

  • Initiateur de la discussion Reeaz
  • Date de début
R

Reeaz

Guest
Bonjour,

j'ai crée une macro qui me retourne des valeurs sur la collonne A et asocie des valeurs sur la collonne B à l'aide d'une formule.

Je voudrai en fait parcouurir la collonne B et comparer la valeur de chaque cellule ds la collonne B avec une valeur précise (inscrite ds la macro).
Si ya égalité je voudrais en fait qu'elle me retourne la valeur de la cellule ds la collonne A (juste à côté).

Cependant ma macro ne marche pas:


Sub Detection()

'Contre = 88135.70166

'Dim Cel As Range

'Range("B2").Select
'Range(Selection, Selection.End(xlDown)).Select

fin = Range("B2").End(xlDown).Row
For i = 2 To fin

If Cells(i, 2).Value = 88135.70166 Then Cells(i, 2).Select

Next i

End Sub

Je joins également le fichier. (Les macro utilisées sont :detection, swap et incrementation, le reste ne sert à rien)

Si qqun pouvait tester ma macro detection, ce serait sympa.

Merci
 
Y

Yo

Guest
Re-Salut,
Si j'ai bien compris, remplace la ligne :

If Cells(i, 2).Value = 88135.70166 Then Cells(i, 2).Select

par:

If Cells(i, 2).Value = 88135.70166 Then
Msgbox "La valeur a été trouvée à la ligne " &i &vbcrlf &"La valeur correspondante dans la colonne A est : " &Cells(i,1)
End if
 
R

Reeaz

Guest
désolé, le fichier est tros gros(malgré le zip), voila les macro:

Sub Incrementation()

'Set SourceRange = Worksheets("feuil1").Range("A1:A2")
'Set fillRange = Worksheets("feuil1").Range("A1:A20")
'SourceRange.AutoFill Destination:=fillRange

'Incrémentation des dates en fonction de la fréquence des paiements
Range("A1").Value = 0
Range("A2").Value = Range("A1").Value + 0.01
Set SourceRange = Worksheets("feuil1").Range("A1:A2")
Set fillRange = Worksheets("feuil1").Range("A1:A10001")
SourceRange.AutoFill Destination:=fillRange
'Range("A3").Select
'Selection.AutoFill Destination:=Range("A3:A90"), Type:=xlFillDefault
'Range("A1:A90").Select



End Sub


Sub Swap()

K = 0.042
F = 0.03869454
t = 26
Contre = 3925078289.46759
b = -1
Amount = 1
Df = 0.98754242542
tenor = 1

Dim SwapVar As Double
Dim sig As Double

fin = Range("A2").End(xlDown).Row
For i = 2 To fin

'On est avant le paiement, donc on utilise BS pour trouver les caplets et les paiements

d1 = (Log(F / K) + (Cells(i, 1).Value / 100) ^ 2 / 2 * t) / ((Cells(i, 1).Value / 100) * Sqr(t))
d2 = d1 - (Cells(i, 1).Value / 100) * Sqr(t)
'Cells(i, 12).Value = d2
Cells(i, 2).Value = (Amount / tenor) * Df * b * (F * Norm(b * d1) - K * Norm(b * d2))

Next i

End Sub


Sub Detection()

'Contre = 88135.70166

'Dim Cel As Range

'Range("B2").Select
'Range(Selection, Selection.End(xlDown)).Select

fin = Range("B2").End(xlDown).Row
For i = 2 To fin

'If Cells(i, 2).Value = 88135.70166 Then Cells(i, 2).Delete
Do While Cells(i, 2) <> ""
If Cells(i, 2) = 3.26441799838215E-03 Then
Cells(i, 2).Select
Selection.EntireRow.Delete
Else
i = i + 1
End If
Loop
Next i

End Sub


Il faut d'abord lancer incrementation puis swap et c detection qui foire...

Merci.
 
R

Reeaz

Guest
Oui et merci ca fonctionne mais la je me retrouve face à unb autre pb!!
Voici les données que je récupère:

25,64 2,56
25,65 2,56
25,66 2,56
25,67 2,57
25,68 2,57
25,69 2,57
25,7 2,57
25,85 2,57
25,86 2,57
25,87 2,58
25,88 2,58
25,89 2,58
25,9 2,58
26,03 2,58
26,04 2,58
26,05 2,58

Comme tu vois je voudrais comparer ma valeur (contre ds la macro), par exple 2.57 à celles renvoyées par le tableau. Comme tu vois si ya plusieurs valeurs identique la macro ne marche pas.
Pour contourner le prob, je voudrai créer une macro qui lorsqu'il y a plusieurs valeurs identiques il récupère les valeurs de la collonne à coté (ici 25.66 25.67 25.68 25.69 etc...) quitte à les mettre sur d'autres cellules et que j'en fasse une moyenne après..
Si qqun a une idée...

Voila la macro en question:

Sub Detection2()

fin = Range("Q2").End(xlDown).Row
For i = 2 To fin

If Cells(i, 17).Value = 2.47816185733289 Then
MsgBox "La valeur a été trouvée à la ligne " & i & vbCrLf & "La valeur correspondante dans la colonne A est : " & Cells(i, 16)
End If

Next i

End Sub


Merci
 
Y

Yo

Guest
Salut,

Si tu veux faire la moyenne, ta procedure devient:

Sub Detection2()

Dim somme, moyenne,compteur

Somme=0
Compteur=0

fin = Range("Q2").End(xlDown).Row
For i = 2 To fin

If Cells(i, 17).Value = 2.47816185733289 Then
' Supprime la msgbox, si tu n'en as pas besoin
MsgBox "La valeur a été trouvée à la ligne " & i & vbCrLf & "La valeur correspondante dans la colonne A est : " & Cells(i, 16)

' Incrementation de la somme et du compteur
Compteur=Compteur+1
Somme=somme+Cells(i,16)

End If

Next i

' Calcul de la moyenne

Moyenne=Somme/Compteur
Msgbox "La moyenne est : " &Moyenne

End Sub
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
10
Affichages
704

Statistiques des forums

Discussions
314 656
Messages
2 111 610
Membres
111 224
dernier inscrit
Test66