Microsoft 365 Comment récupérer l'adresse d'une cellule dans une variable tableau ?

DanB34

XLDnaute Nouveau
Bonjour,
Dans une variable tableau, je cherche à récupérer l'adresse d'une cellule contenant en fonction de sa valeur.
Ex. avec les nombres ci-dessous de A1 à D10
Si la somme des col. A + B est > C + D -> récupération de l'adresse (pas sur la feuille Excel, mais dans la var tableau Tb)


14​
29​
30​
27​
26​
44​
19​
11​
70​
6​
90​
18​
90​
62​
86​
69​
50​
37​
37​
61​
84​
18​
42​
31​
67​
53​
37​
39​
74​
13​
25​
65​
5​
53​
84​
92​
80​
65​
93​
65​


VB:
Sub Test_Adresses()
Dim FD, Tb As Variant
Dim CelDep As String, CelArv As String, CelTabDep As String, CelTabArv As String
Dim Cpt As Long, Cpt2 As Long
Dim Calc1 As Integer, Calc2 As Integer

    Set FD = Worksheets("Feuil1")
    DerLigne = FD.Range("A999999").End(xlUp).Row

    CelDep = Range("A1").Address
    CelArv = Range("A1:D" & DerLigne).Address
    Tb = FD.Range(CelDep & ":" & CelArv)
    
'Teste si la somme des cellules des colonnes A + B et bien < à la somme des cellules des colonnes C + D
'Si ce n'est pas le cas, récupération de l'adresse - de la var tableau - de la cellule de la Col. A + n° de ligne
'et de l'adresse de la cellule de la col. D + n° de ligne
    Cpt = 0
    Cpt2 = 0
    For I = LBound(Tb, 1) To UBound(Tb, 1)
        Calc1 = Tb(I, 1) + Tb(I, 2)
        Calc2 = Tb(I, 3) + Tb(I, 4)
        If Calc1 > Calc2 Then
            Cpt = Cpt + 1
            CelTabDep = Cells(Tb(I, 1)).Address
            CelTabArv = Cells(Tb(I, 2)).Address
        End If
    Next
    Erase Tb
End Sub

Les variables CelTabDep et CelTabArv affichent des résultats bizarres $Z$1 et $AR$1 pour la ligne n° 2 (1ère ligne qui remplit les conditions).
Merci d'avance pour l'aide et le temps passé
Bonne journée
Dan
 
Solution
Bonjour à tous
On peut également "jouer" avec la notation interne des cellules d'une plage.
exemple :
VB:
Set t = Range("A1").CurrentRegion
For k = 1 To t.Count Step t.Columns.Count
  If t(k) & t(k + 1) > t(k + 2) + t(k + 3) Then MsgBox t(k).Address & vbCrLf & t(k + 3).Address
Next
cet exemple uniquement pour montrer (les adresses à montrer sont à adapter)

Discussions similaires

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh