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 :

Tester présence d'une valeur sur une plage donnée [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 27
    Points : 18
    Points
    18
    Par défaut Tester présence d'une valeur sur une plage donnée
    Bonjour,

    Je souhaiterai que si la valeur de la cellule A1 est présente dans la colonne A de la ligne 2 à 6, le chiffre 1 soit inscrit dans la cellule P11, si présent dans la colonne B de la ligne 2 à 6, le chiffre 1 soit inscrit dans la cellule P12 etc.

    Si ce n'est pas le cas, la valeur 0 est inscrite dans la cellule P associée à la colonne (P11 ou P12...)

    J'ai utilisé le code suivant mais ça n'a pas l'air de marcher:

    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
    Sub test()
     
    Dim i As Byte, j As Byte, X As Integer
    X = 0
    Z = 16
       For i = 2 To 6
          For j = 2 To 6
            If Sheets("page1").Cells(j, i).Value = Range("A1") Then
            X = X + 1
                Cells(11, Z).Value = X
     
                Else: Cells(11, Z).Value = "0"
     
            End If
        Next j
        Z = Z + 1
        Next i
     
    End Sub
    Merci pour votre aide.
    MP

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    essayes comme ça, je n'ai pas vérifié :
    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
    Sub test()
     
    Dim i As Integer, j As Byte, X As Integer
    X = 0
    Z = 16
    i = 1
    For j = 2 To 6
       If Sheets("page1").Cells(j, i).Value = Range("A1") Then
          X = X + 1
          Cells(11, Z).Value = X
          Else
          Cells(11, Z).Value = "0"
       End If
       If j = 6 Then j = 1: Z = 17: i = 2
       If j = 6 And Z = 17 Then Exit For
    Next j
     
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Test()
    Dim c As Range
    With Sheets("page1")
       Set c = .Range("A2:P6").Find(Range("A1").Value, LookIn:=xlValues, lookat:=xlWhole)
       If Not c Is Nothing Then .Range("P" & 10 + c.Column).Value = 1
       Set c = Nothing
    End with
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Re,

    casefayere--> il y a une erreur d'excécutuion qui s'affiche: Dépassement de capacité.

    mercatog et casefayere --> Je suis trompé dans ce que j'ai écrit dans le premier message, voilà la bonne version:

    Je souhaiterai que si la valeur de la cellule A1 est présente dans la colonne A de la ligne 2 à 6, le chiffre 1 soit inscrit dans la cellule P11, si présent dans la colonne B de la ligne 2 à 6, le chiffre 1 soit inscrit dans la cellule Q11 etc.

    Si ce n'est pas le cas, la valeur 0 est inscrite dans la cellule associée à la colonne (P11 ou Q11...)

    Merci d'avance pour votre aide

  5. #5
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sub Test()
    Dim c As Range
    With Sheets("page1")
       Set c = .Range("A2:P6").Find(Range("A1").Value, LookIn:=xlValues, lookat:=xlWhole)
       If Not c Is Nothing Then .Cells(11, 15 + c.Column).Value = 1
       Set c = Nothing
    End With
    end sub
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Test2()
    Dim c As Range
    With Sheets("page1")
        .Range("P11:AD11").Value = 0
        For Each c In .Range("A2:P6")
            If c = .Range("A1") Then .Cells(11, 15 + c.Column).Value = 1
        Next c
    End With
     
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  6. #6
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    re,
    excuses-moi pour le code envoyé trop vite mais mercatog s'occupe mieux de toi
    sinon je corrige le mien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub test()
     
    Dim i As Integer, j As Integer, X As Integer, z As Integer
    X = 0: z = 16: i = 1: Cells(11, 16) = "": Cells(11, 17) = "" 'reinitialisation des cellules mais pas obligé
    For j = 2 To 6
       If Range("A" & j) = Range("A1") Then
          Cells(11, z) = Cells(11, z) + 1
       End If
       If j = 6 And z = 17 Then Exit For
       If j = 6 And z = 16 Then z = 17: j = 1
    Next j
    If Cells(11, 16) = 0 Then Cells(11, 16) = "0"
    If Cells(11, 17) = 0 Then Cells(11, 16) = "0"
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Merci à vous deux!

    Est ce que vous pourriez m'expliquer à quoi correspond chaque terme du morceau suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(11, 15 + c.Column)
    Merci.

  8. #8
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    c est déclaré comme range, donc c.column représente le numéro de colonne, dans le code de mercatog, suivant ce que find trouve c est egal à 1 (col A) ou a 2 (col B)

    a +
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 27
    Points : 18
    Points
    18
    Par défaut
    Merci pour les infos.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Recuperer une valeur dans une grille sur une image
    Par gwal21 dans le forum Images
    Réponses: 3
    Dernier message: 26/02/2011, 23h41
  3. Tri d'une requête sur une valeur ou une autre
    Par mims1664 dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/08/2009, 17h40
  4. afficher une valeur sur une feuille lorsqu'une checkbox est cochée
    Par chrnoe dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2008, 14h39
  5. [VBA Excel] Appliquer une macro sur une celulle contenant une valeur
    Par tchauviere dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/01/2008, 10h21

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