Tester les cellules d'un tableau / d'une colonne
'Test 1 --> fonctionne mais avec méthode .find donc peut trouver aussi d'autres chaînes de mots
Function SI_VALEUR(Var As String)
Var = Range("D7")
If Var = Cells.Find(What:=Var) Then
SI_VALEUR = "Le code n'appartient pas au tableau"
Else
SI_VALEUR = "Le code appartient au tableau"
End If
End Function
'Test 2 --> failed
Function SI_VALEUR1(Var As String)
Var = Range("D7")
If Var = ActiveSheet.ListObject("Tableau1") Then
SI_VALEUR1 = "Le code appartient au tableau"
Else
SI_VALEUR1 = "Le code n'appartient pas au tableau"
End If
End Function
'Test 3 --> failed
Function SI_VALEUR2(Var As String)
Dim MaPlage As Range
Var = Range("D7")
Set MaPlage = ActiveSheet.Range("G3:G9")
If Var = MaPlage Then
SI_VALEUR2 = "Le code n'appartient pas au tableau"
Else
SI_VALEUR2 = "Le code appartient au tableau"
End If
Exit Function
End Function
Sub Val_num()
Dim derlig As Integer
Dim résultat As Integer
For ligne = 2 To derlig
derlig = Range("N" & Rows.Count).End(xlUp).Row + 1
résultat = ActiveSheet.Range("N" & derlig).WorksheetFunction.Count(Range("B3:B9"))
Next
MsgBox "Le nombre de valeurs numériques est de " & résultat
End SubBonjour à tous et à toutes j'espère que vous allez bien
Dans le cadre d'un cours vba je dois faire quelques petites exos. Je sens que je ne suis plus très loin du résultat mais après plusieurs tests je peine un peu a y arriver...
Il y en a un premier où je dois tester si une cellule appartient à un tableau grâce à une Function.
Dans le second je dois créer une boucle et renvoyer le nombre de valeurs numériques présentent dans la colonne (en utilisant un derlig enfin dernière ligne quoi).
Si quelqu'un pouvait m'expliquer pourquoi mes codes ne fonctionnent pas ou simplement m'aiguiller cela m'aiderait beaucoup !
Je vous met le fichier Excel avec les exemples et les codes ci-dessous.
Je vous remercie par avance
Bonjour! Je ne comprends pas pourquoi tu fais une boucle pour récupérer le nombre de valeurs étant donné que cela ne bouge pas et que tu n'utilise pas ta variable ligne. Voila un code ci dessous pour t'aider:
Sub Val_num()
Dim derlig As Integer
derlig = Range("N" & Rows.Count).End(xlUp).Row + 1
MsgBox "Le nombre de valeurs numériques est de " & derlig
End SubA noter que l'on peut passer par des fonctions Excel afin de parvenir à nos fins en VBA. Par exemple, la fonction NB aurait pu servir ici.
Concernant la recherche d'une cellule je verrais les choses ainsi:
Sub Test()
Dim c As Range, a As Integer
a = 0
For Each c In Range("A1:C23") 'Ta plage de recherche
If c = Range("D7").Value Then
MsgBox "Le code appartient au tableau"
a = 1
End If
Next
If a = 0 Then
MsgBox "Le code n'appartient pas au tableau"
End If
End SubBonjour Sothin, merci pour ton retour !
Je comprends ce que tu veux dire pour la boucle. Malheureusement c'est les consignes que j'ai reçu... et je sais que =NB est bien plus pratique et rapide mais on doit le faire en vba.
Par ailleurs, dans ton premier code, si je l'ai bien compris il va compter chaque cellule "non vide" de la colonne "N", il faudrait qu'il compte uniquement les valeurs numériques de celli-ci.
Concernant ton second code, si j'adapte ta procédure Sub en procédure Function (pour l'avoir comme une fonction excel) cela ne fonctionne pas et si je l’exécute comme tel le MsgBox ne se ferme pas.
Merci pour ton aide
Alors s'il faut faire une boucle, je pense qu'il faudrait faire ainsi:
Sub ValNum()
Dim i As Integer, a As Integer, dl As Integer
a = 0
dl = Range("N" & Rows.Count).End(xlUp).Row
For i = 3 To dl
If IsNumeric(Cells(i, 14)) = True Then
a = a + 1
End If
Next
MsgBox "Le nombre de valeurs numériques est de " & a
End SubAprès je ne m'y connais pas trop en fonction, je ne saurai pas faire la transition depuis le code que je t'ai fourni. Mais je pense qu'il faudrait juste préciser la plage de recherche de ton Find afin qu'il aille chercher au bon endroit
Rebonjour Sothin j'espère que tu vas bien.
Merci beaucoup pour ton aide. Effectivement j'ai remplacé le Cells par mon Range et ça fonctionne !
Et je ne connaissais pas le IsNumeric, donc merci encore. Grâce à toi je repars avec deux codes qui fonctionnent et en plus de ça de nouvelles connaissances
Passe une très bonne journée !