IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Vérification présence de valeurs d'un tableau deux dimensions dans une colonne


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé de projet développement
    Inscrit en
    Janvier 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Chargé de projet développement
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2019
    Messages : 24
    Par défaut Vérification présence de valeurs d'un tableau deux dimensions dans une colonne
    Bonjour à tous,

    Je cherche à vérifier si les l'ensemble des valeurs présentes sur une plage de données bornée est présente dans une colonne de valeurs (base de données)

    J'ai tenté ce code quine fonctionne pas et qui a mon avis est plus que bancale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Private Sub Verification_Click()
     
    Dim cells As Range
    Dim cellsb As Range
     
    For Each cells In Worksheets("extraction").Range("D2")
        For Each cellsb In Worksheets("BD").Range("A13:A200")
            If cells.Value = cellsb.Value Then
            TextBox1.Value = "présent"
            TextBox1.BackColor = &HC0C0C0
            Else
            TextBox1.Value = "Masse non reconnue"
            TextBox1.BackColor = &H80FF&
            End If
     
        Next cellsb
      Next cells
     
    End Sub
    Pourriez vous m'aider

    En vous remerciant bien par avance,

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Thomas, bonjour le forum,

    Ta première boucle ne contient qu'une seule cellule, D2. Est-ce normal ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each cells In Worksheets("extraction").Range("D2")

  3. #3
    Membre averti
    Homme Profil pro
    Chargé de projet développement
    Inscrit en
    Janvier 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Chargé de projet développement
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2019
    Messages : 24
    Par défaut
    Bonjour Thautheme,

    Toutes mes excuses oui en effet la plage n'est pas complète voici le code avec la plage:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Private Sub Verification_Click()
     
    Dim cells As Range
    Dim cellsb As Range
     
    For Each cells In Worksheets("extraction").Range("D2:M20")
        For Each cellsb In Worksheets("BD").Range("A13:A200")
            If cells.Value = cellsb.Value Then
            TextBox1.Value = "présent"
            TextBox1.BackColor = &HC0C0C0
            Else
            TextBox1.Value = "Masse non reconnue"
            TextBox1.BackColor = &H80FF&
            End If
     
        Next cellsb
      Next cells
     
    End Sub

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    1) cells est un mot réservé de VBA. Utilise un autre mot que celui-là.
    2) Utilise donc la méthode worksheetfunction.countif (rubrique WorksheetFunction.CountIf, méthode de ton aide interne VBA) en lieu et place de la boucle For Each cellsb
    3) pas vraiment une bonne idée, que celle de modifier la propriété value d'une textbox au sein d'une boucle ... (à moins que, en cas de plusieurs occurences, tu aies une rapidité de vision exceptionnelle ...)

  5. #5
    Membre averti
    Homme Profil pro
    Chargé de projet développement
    Inscrit en
    Janvier 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Chargé de projet développement
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2019
    Messages : 24
    Par défaut
    Bonjour Unparia,

    Oui en effet cells n'était pas une bonne idée.

    Concernant le point 3, mon but est surtout d'avoir un résultat de synthèse. Toutes les valeurs sont présentes dans la base ou non.

    J'ai essayé plusieurs essais avec Function.countIf mais cela fonctionne pas je n'arrive pas a le construire... Peux tu m'aider ?

    Merci d'avance,

  6. #6
    Membre averti
    Homme Profil pro
    Chargé de projet développement
    Inscrit en
    Janvier 2019
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Chargé de projet développement
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2019
    Messages : 24
    Par défaut
    Voici également le code modifié, mais cela me semble fonctionner uniquement pour la cellule M20 qui est la dernière de la plage...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Private Sub Verification_Click()
     
    Dim cellsc As Range
    Dim cellsb As Range
    Set cellsb = Worksheets("BD").Range("A13:A200")
     
    For Each cellsc In Worksheets("extraction").Range("D2:M20")
       If WorksheetFunction.CountIf(cellsb, cellsc) Then
     
            TextBox1.Value = "présent"
            TextBox1.BackColor = &HC0C0C0
            Else
            TextBox1.Value = "Masse non reconnue"
            TextBox1.BackColor = &H80FF&
            End If
     
     
      Next cellsc
     
    End Sub

    Comme me l'a dit unparia le problème et de la textbox dans le si ce qui laisse que le dernier résultat de la recherche non?

    Auriez vous une solution ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/01/2018, 21h59
  2. Réponses: 1
    Dernier message: 07/10/2013, 01h33
  3. Réponses: 0
    Dernier message: 04/05/2011, 14h50
  4. Comment passer un tableau à deux dimensions dans une fonction
    Par Niko_de_bordo dans le forum Débuter
    Réponses: 2
    Dernier message: 02/07/2009, 15h15
  5. Passage de tableau à deux dimensions dans une session
    Par keumlebarbare dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 28/11/2006, 18h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo