Partage
  • Partager sur Facebook
  • Partager sur Twitter

Trouver et afficher le(s) élément(s) manquant(s)

VBA Coding

    16 octobre 2021 à 23:30:37

    Bonjour,

    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.

    J'espere avoir été assez clair.

    D'avance merci pour votre support...

    -
    Edité par DylaneEB 16 octobre 2021 à 23:31:09

    • Partager sur Facebook
    • Partager sur Twitter

    D.E

      21 octobre 2021 à 15:01:58

      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



      -
      Edité par umfred 21 octobre 2021 à 15:02:15

      • Partager sur Facebook
      • Partager sur Twitter
        22 octobre 2021 à 0:31:13

        Bonsoir,

        Un grand merci mon cher. C'est parfait

        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
        
        



        • Partager sur Facebook
        • Partager sur Twitter

        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.
        • Editeur
        • Markdown