Je débute dans le VBA, et je souhaite pouvoir réaliser une tâche qui perdure déjà des semains. J'avoue suis pas très fort..
Voici, j'ai un tableau Excel contenant dans la colone C, un ensemble d'éléments (texte). Je souhaiterais mettre en place un script VBA qui parcourt la colonne C7:C22 et un tableau (array) des valeurs prédéfinies. Si l'une des valeurs prédéfinie dans le tableau déclaré (array) est absent dans la colonne
C7:C22, alors le script affiche un message indiquant les éléments absents.
Sub FindTheMissing()
Dim AwaitedList(16) As Variant
Dim elm As Variant
Dim counter As Integer
counter = 0
AwaitedList(16) = Array(contient l'ensemble des valeurs predéfinies)
For Each elm In Range("C7:C22")
If elm = "-" Then
counter = counter + 1
End if
Next elm
If counter > 0 Then
MsgBox ("Il en manque " & counter)
End if
End Sub
J'ignore comment éditer le code pour qu'il recherche et affiche les éléments présents dans le Array() mais absent dans la colonne.
je pense qu'on peut passer par une boucle imbriquée assez simple
Sub FindTheMissing()
Dim AwaitedList As Variant
Dim elm As Variant
Dim counter As Integer
Dim Cellule as Range
Dim isPresent as Boolean
counter = 0
AwaitedList = Array(1,2,3,4,5) 'contient l'ensemble des valeurs predéfinies
For Each elm In AwaitedList
isPresent=False
For Each cellule In Range("C7:C22")
If Cellule.value = elm Then
isPresent=True 'vaut true si présent dans le range et le array
Exit For 'si présent, on peut sortir de la boucle dans tout parcourir tout le range
End if
Next Cellule
If Not isPresent Then ' si pas présent
counter=counter+1 'si on veut compter le nombre d'éléments non présents
Debug.Print elm ' on affiche dans la fenêtre de debug (à adapter selon le besoin)
End If
Next elm
End Sub
Voici le code final si ça peut aider quelqu'un d'autre plus tard
Sub FindTheMissing()
Dim AwaitedList As Variant
Dim elm As Variant
Dim counter As Integer
Dim Cellule As Range
Dim isPresent As Boolean
counter = 0
AwaitedList = Array(Liste des éléments prédéfinis) 'contient l'ensemble des valeurs predéfinies
For Each elm In AwaitedList
isPresent = False
For Each Cellule In Range("C7:C22")
If Cellule.Value = elm Then
isPresent = True 'vaut true si présent dans le range et le array
Exit For 'si présent, on peut sortir de la boucle dans tout parcourir tout le range
End If
Next Cellule
If Not isPresent Then ' si pas présent
counter = counter + 1 'si on veut compter le nombre d'éléments non présents
temp = temp & "" & elm & ", " 'on affiche dans la fenêtre de debug (à adapter selon le besoin)
End If
Next elm
If counter > 0 Then
MsgBox "Il en manque " & counter & " : " & temp
Else
MsgBox "Soldes Complets"
End If
End Sub
D.E
Trouver et afficher le(s) élément(s) manquant(s)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
D.E
D.E