PB:récupérer une sélection dans VB Excel

boulet - 23 févr. 2008 à 15:39
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 -
bonjour!
Tout d'abord désoler de vous embèter.
Je suis débutante en programmation et je me demande si vous pourriez m'aider.
J'ai un sousie avec une fonction dans excel visual basic: je n'arrive pas à transcrire la plage de donnée selectionner dans le classeur, la selection, en tableau dans ma fonction : pourriez vous m'aider?
Voici mon code, je cherche à faire une fonction qui prend une plage de donnée en entrer et qui renvoie 0 si toute les case sont différentes ou 1 sinon:

Function dif(r)

c = r.Columns.Count
l = r.Raws.Count
s = 0
For k = 1 To l
For m = 1 To c
a = r.Cells(l, m).Values
For j = 1 To c
For i = 1 To l
If (a = (r.Cells(i, j).Values)) Then
s = s + 1
End If
Next i
Next j
Next m
Next k
If (s = (c * l)) Then
dif = 0
Else
dif = 1
End If

End Function

En gros ma function récupére la plage de donnée et pour chaque case de la plage , elle compte combien de cellules ont la meme valeurs.
elle additionne la les scores de toutes les cases et si la somme et supérieur au nombre de cases alors au moins 2 cases sont identiques et donc elle renvoie 1

Dans fonction j'arrive pas à récupérer r comme un tableau, un petit coup de main?

2 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 723
23 févr. 2008 à 18:02
bonjour

Si j'ai bien compris ton but, je te propose ceci :
Function dif(r As Range)
Dim cl1 As Object
Dim cl2 As Object
For Each cl1 In r
    For Each cl2 In r
        If cl1.Address <> cl2.Address _
         And cl1.Value = cl2.Value Then
            dif = 1
            Exit Function
        End If
    Next cl2
Next cl1
dif = 0
End Function

Puisque tu veux 1 en résultat si tu as deux cellules égales, on sort des tests dès l'égalité et si aucune égalité trouvée, cela rend 0.
0
Merci beaucoup!
Vraiment: c'est exactement ce que je voulais et en plus c'est plus simple (meme plus la peine de s'embeter à récupérer le nombre de ligne et de colonne).
En gros: gros merci, ça fesait déja 3 jours que je chercher à comprendre comment on fesait (je suis vraiment un boulet!) et en plus maintenant j'ai compris le truc (définition de ma variable comme un range et définition des variables cellules de ce range comme des objets), donc je serai capable de m'en reservir.

Encore merci et à bientot
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 723
24 févr. 2008 à 09:00
bonjour

Heureux de t'avoir aidé mais rassure toi il y a toujours un début à tout et il faut toujours apprendre à marcher avant de pouvoir courir : le champion olympique a lui aussi eu des problèmes pour mettre un pied devant l'autre quand il était bébé !
0