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 :

Compter des références selon critères [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut Compter des références selon critères
    Bonjour,

    Je cherche à compter des références selon des critères.

    J'ai un classeur archives qui reprend toutes les références produites dans l'année en colonne A.
    j'ai un classeur liste dans lequel il y a des références (colonne A) classées selon le type d'utilisation du produit (agroalimentaire, pharmaceutique, clinique) en colonne C

    je veux compter le nombre de référence produite dans l'année selon le type d'utilisation.

    j'ai un problème car parfois il se peut qu'il y est plusieurs utilisations et dans ce cas il y a ceci dans la cellule: Clinique/Agro/pharma (par exemple)
    Des fois il y a des majuscules à Agro et parfois non enfin bref j'ai commencé ce bout de code mais j'aimerais un peux d'aide dans le cas ou par exemple il y a Clinique/Agro/pharma.
    Comment faire svp?

    Ai-je bien débuter le code ou faut il complètement changer la forme?


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub Newtry()
    Dim wkd As Workbook
    Dim Wks As Workbook
    Dim Wka As Workbook
    Dim IntSum As Integer
     
    Dim cell As Range
    'definit le classeur destination
    Set wkd = ThisWorkbook
     
    'definit le classeur source, doit être déjà ouvert
    'Workbooks.Open Filename:="" & ThisWorkbook.Worksheets("Test").Cells(17, 2) & "", WriteResPassword:="history"
    'Workbooks.Open Filename:="" & ThisWorkbook.Worksheets("Test").Cells(18, 2) & ""
     
    '=========================================================
    '           CHANGEZ LES NOMS POUR NOUVELLE ANNEE
    '=========================================================
    Set Wks = Workbooks("Archives_2013.xls")
    Set Wka = Workbooks("ArchivesMS_2013.xls")
     
    'On regarde pour chaque ligne 
    For Each cell In wkd.Sheets("liste 17025").Range("C3:C" & [C3].End(xlDown).Row)
        If cell.Value = "Agro" Then
        IntSum = IntSum + Application.CountIf(Wks.Sheets("Liste PETRI").Range("A3:A" & Range("A3").End(xlDown).Row), cell.Offset(0, -3)) 'On incrémente la somme
        IntSum = IntSum + Application.CountIf(Wks.Sheets("Liste T&F").Range("A3:A" & Range("A3").End(xlDown).Row), cell.Offset(0, -3)) 'On incrémente la somme
        IntSum = IntSum + Application.CountIf(Wka.Sheets("Liste Appro Marcy").Range("A3:A" & Range("A3").End(xlDown).Row), cell.Offset(0, -3)) 'On incrémente la somme
        IntSum = IntSum + Application.CountIf(Wka.Sheets("Liste Milieu Sec").Range("A3:A" & Range("A3").End(xlDown).Row), cell.Offset(0, -3)) 'On incrémente la somme
        End If
    Next cell 'on passe à la ligne suivante
     
     
    'MsgBox "Total " & IntSum
    Workbooks("liste 17025").Sheets("Test").Cells(5, 6).Value = IntSum
    End Sub

    Je mets en PJ les classeur pour que vous puissiez voir comment c'est fait.

    Merci d'avance et bonne journée
    Fichiers attachés Fichiers attachés
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Bonjour,

    Quel est précisément ton problème ? Tu n'obtiens pas le résultat ? Ou est-ce que tu as une erreur dans le code ? si oui, sur quelle ligne ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    Bonjour Daniel,

    Meric pour ton interet sur cette discussion

    pour l'instant je n'ai pas de problème particuliers je suis juste en élaboration du code mais je cherche à ne pas oublier des valeurs:

    quand je mets la condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If cell.Value = "Agro" Then
    Le code ne va surement pas prendre les références pour lesquelles il y a dans la cellule cible Agro/Clinique/Pharma par exemple Il ne va compter que les références pour lesquelles il y a dans la cellule cible Agro uniquement alors qu'il faut qu'il compte quand même les autres références.

    Alors à moins de faire plein de conditions du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If cell.Value = "Agro" Or cell.Value = "Agro/pharma" Or cell.Value = "Clinique/Agro" Then
    N'y a t il pas une autre solution?
    Le code vas-t-il aussi prendre en compte les majuscules? car en fait, il n'y a pas eu de règles dans le tableau construit:

    une fois il y a marqué Agro (avec majuscule) une fois agro (sans majuscule) .. etc

    Pour l'instant c'est juste une question le code sinon ne semble pas avoir de problème particulier
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Bonjour,

    consulter l'aide VBA de la fonction InStr par exemple …


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    bonjour,


    Merci Marc-L pour ton interet également,


    j'ai regardé et tester pour Instr

    j'ai fait un test comme ceci pour voir si cela marche et j'ai pris 20 chaines de caractère dont 5 avec le mot Agro dedans. Or il me revoit toujours 1 pour les 20 chaines alors qu'il devrait renvoyer 15 fois 0 et 5 fois 1 non?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Dim wkd As Workbook
    Set wkd = ThisWorkbook
    For Each cell In wkd.Sheets("liste 17025").Range("C3:C" & [C3].End(xlDown).Row)
    MsgBox "valeur" & InStr(1, cell.Value, Agro, 1)
    Next cell
    End Sub
    désolé de pas être bien fortiche mais bon c'est en patogeant qu'on apprend à nager mdrr
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  6. #6
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    type d'utilisation du produit (agroalimentaire, pharmaceutique, clinique) en colonne C
    Sauf erreur, colonne C = numéro de lot ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  7. #7
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    colonne C du classeur "Liste 17025" = domaine Clinique / Agroalimentaire / Pharmaceutique
    colonne C des classeurs archvies = n° de lot mais dans mon cas, cette colonnene sert pas on se concentre juste sur la colonne A ou il y a les références


    J'ai essayé de contourner le problème du Instr pour le moment en faisant:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub Newtry()
    Dim wkd As Workbook
    Dim Wks As Workbook
    Dim Wka As Workbook
    Dim IntSum As Integer
     
    Dim cell As Range
    'definit le classeur destination
    Set wkd = ThisWorkbook
     
    'definit le classeur source, doit être déjà ouvert
    'Workbooks.Open Filename:="" & ThisWorkbook.Worksheets("Test").Cells(17, 2) & "", WriteResPassword:="history"
    'Workbooks.Open Filename:="" & ThisWorkbook.Worksheets("Test").Cells(18, 2) & ""
     
    '=========================================================
    '           CHANGEZ LES NOMS POUR NOUVELLE ANNEE
    '=========================================================
    Set Wks = Workbooks("Archives_2014.xls")
    Set Wka = Workbooks("ArchivesMS_2014.xls")
     
    'On regarde pour chaque ligne si elle est cochée dans la colonne P
    For Each cell In wkd.Sheets("liste 17025").Range("C3:C" & [C3].End(xlDown).Row)
        If cell.Value = "Agro" Then
        IntSum = IntSum + Application.CountIf(Wks.Sheets("Liste PETRI").Range("A4:A" & Range("A4").End(xlDown).Row), cell.Offset(0, -2)) 'On incrémente la somme
        IntSum = IntSum + Application.CountIf(Wks.Sheets("Liste T&F").Range("A4:A" & Range("A4").End(xlDown).Row), cell.Offset(0, -2)) 'On incrémente la somme
        IntSum = IntSum + Application.CountIf(Wka.Sheets("Liste Appro Marcy").Range("A4:A" & Range("A4").End(xlDown).Row), cell.Offset(0, -2)) 'On incrémente la somme
        IntSum = IntSum + Application.CountIf(Wka.Sheets("Liste Milieu Sec").Range("A4:A" & Range("A4").End(xlDown).Row), cell.Offset(0, -2)) 'On incrémente la somme
        End If
    Next cell 'on passe à la ligne suivante
     
     
    'MsgBox "Total " & IntSum
    Workbooks("liste 17025").Sheets("Test").Cells(8, 3).Value = IntSum
    End Sub
    j'ai ensuite mis dans l'évènement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub Worksheet_Activate()
    Application.ScreenUpdating = False
    Newtry
    Newtry1
    Newtry2
    Newtry3
    Newtry4
    Newtry5
    Newtry6
    End Sub
    et à chaque Newtry différent j'ai juste changé la condition:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If cell.Value = "clinique" Then 'pour Newtry1
    If cell.Value = "clinique/agro" Then 'pour Newtry2
    etc....
    le problème c'est que le code ne fonctionne pas du tout il me renvoie 114 références pour la macro Newtry or il y a a des milliers....

    DOnc je vais avoir besoin d'une tout autre aide...

    Je veux que la macro parcours le classeur "liste 17025" ligne par ligne
    pour toutes les références de type pharma par exemple, la macro recherche dans les deux autres classeurs "archives_2014" et "archivesMS_2014 le nombre de correspondance (références trouvées en colonne A des classeurs archives (attention format texte aussi)) et ajoute ce nombre à l'incrément intsum. Je copie ensuite Intsum dans une cellule du classeur Liste 17025

    La macro fonctionnait pour le même type de recherche sur des autres classeur. Je pensais arriver à bien l'adapter mais apparamment non... surement due au format des cellules non??

    voici mon classeur liste 17025 avec les macros à jour si cela peut aider à résoudre le problème
    Fichiers attachés Fichiers attachés
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  8. #8
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 202
    Points : 14 353
    Points
    14 353
    Par défaut
    Je n'ai peut-être pas compris l'utilité du classeur "Archives". Je n'ai pris en compte que les références existantes à la fois sur le fichier liste et sur la feuille "Liste PETRI" du classeur Archives :

    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
    22
    Sub TestDaniel()
        Dim C As Range, CtrAgr As Long, CtrPha As Long, CtrCli As Long, Tabl As Variant
        Workbooks.Open "C:\Users\Daniel\OneDrive\mpfe\bboy-eazy\Archives_2013.xls"
        With Sheets("Liste PETRI")
            Tabl = Application.Transpose(.Range("A4", .Cells(.Rows.Count, 1).End(xlUp)))
        End With
        ActiveWorkbook.Close
        With Sheets("liste 17025")
            For Each C In .Range("A3", .Cells(.Rows.Count, 1).End(xlUp))
                If IsNumeric(Application.Match(C.Value, Tabl, 0)) Then
                    If InStr(1, UCase(C.Offset(, 2).Value), "PHARMA") > 0 Then CtrPha = CtrPha + 1
                    If InStr(1, UCase(C.Offset(, 2).Value), "AGRO") > 0 Then CtrAgr = CtrAgr + 1
                    If InStr(1, UCase(C.Offset(, 2).Value), "CLINIQUE") > 0 Then CtrCli = CtrCli + 1
                End If
            Next C
        End With
        With Sheets("Test")
            .[F5].Value = CtrAgr
            .[F6].Value = CtrPha
            .[F7].Value = CtrCli
        End With
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  9. #9
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    bonjour Daniel et merci beacuoup.

    J'ai regardé ton code à tête reposée et en gros oui c'est exactement ca qu'il me faut mais je ne comprends pas pourquoi il ne compte pas bien.

    En gros le classeur archives c'est toutes les références contrôlées au cours de l'année.
    le classeur liste, c'est le classeur qui regroupe les références que l'entreprise vend et classée selon le type d'utilisation (pharma, agro ou clinique)

    Je voudrais maintenant avoir le nombre de références contrôlées par type d'utilisation produit en gros agro, clinique ou pharma donc exactemetn ce que tu as fait dans ton code. Le problème c'est que les nombre qui ressortent ne sont pas bon du tout

    Je pense que c'est du au format mais sans grande conviction car le format dans le classeur liste a été défini en texte or le format du classeur archive a été donné en standard il y a donc un séparateur des milliers. J'ai donc pensé mettre au format texte également le classeur archives. En essayant ton code il en ressort ceci:

    CtrAgr = 3
    CtrPha = 4
    CtrCli = 5

    alors que dans le classeur archive (j'ai supprimé toutes les valeurs sauf 100 références 43 041 donc il devrait théoriquement : CtrCli = 100 car la référence 43041 est de type "clinique"

    Je ne comprends pas pourquoi cela ne fonctionne pas...
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  10. #10
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    j'ai refait des tests et il s'avère que le code de base est le suivant et fonctionneparfaitemetn pour l'utilisation:


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub Newtry()
    Dim wkd As Workbook
    Dim Wks As Workbook
    Dim Wka As Workbook
    Dim IntSum As Integer
     
    Dim cell As Range
    'definit le classeur destination
    Set wkd = ThisWorkbook
     
    'definit le classeur source, doit être déjà ouvert
    'Workbooks.Open Filename:="" & ThisWorkbook.Worksheets("Test").Cells(17, 2) & "", WriteResPassword:="history"
    'Workbooks.Open Filename:="" & ThisWorkbook.Worksheets("Test").Cells(18, 2) & ""
     
    '=========================================================
    '           CHANGEZ LES NOMS POUR NOUVELLE ANNEE
    '=========================================================
    Set Wks = Workbooks("Archives_2013.xls")
    Set Wka = Workbooks("ArchivesMS_2013.xls")
     
    'On regarde pour chaque ligne si elle est cochée dans la colonne P
    For Each cell In wkd.Sheets("liste 17025").Range("P3:P" & [P3].End(xlDown).Row)
        If cell.Value = "X" Then
        IntSum = IntSum + Application.CountIf(Wks.Sheets("Liste PETRI").Range("A4:A" & Range("A4").End(xlDown).Row), cell.Offset(0, -15)) 'On incrémente la somme
        IntSum = IntSum + Application.CountIf(Wks.Sheets("Liste T&F").Range("A4:A" & Range("A4").End(xlDown).Row), cell.Offset(0, -15)) 'On incrémente la somme
        IntSum = IntSum + Application.CountIf(Wka.Sheets("Liste Appro Marcy").Range("A4:A" & Range("A4").End(xlDown).Row), cell.Offset(0, -15)) 'On incrémente la somme
        IntSum = IntSum + Application.CountIf(Wka.Sheets("Liste Milieu Sec").Range("A4:A" & Range("A4").End(xlDown).Row), cell.Offset(0, -15)) 'On incrémente la somme
        End If
    Next cell 'on passe à la ligne suivante
     
     
    'MsgBox "Total " & IntSum
    Workbooks("liste 17025").Sheets("Test").Cells(5, 3).Value = IntSum
    End Sub

    j'ai voulu adapter à mon cas en changeant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each cell In wkd.Sheets("liste 17025").Range("P3:P" & [P3].End(xlDown).Row)
    'changer par
    For Each cell In wkd.Sheets("liste 17025").Range("C3:C" & [C3].End(xlDown).Row)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If cell.Value = "X" Then
    'changer par
    If cell.Value = "clinique" Then
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IntSum = IntSum + Application.CountIf(Wks.Sheets("Liste PETRI").Range("A4:A" & Range("A4").End(xlDown).Row), cell.Offset(0, -15))
    'changer par
    IntSum = IntSum + Application.CountIf(Wks.Sheets("Liste PETRI").Range("A4:A" & Range("A4").End(xlDown).Row), cell.Offset(0, -2))
    or si maintenant je ne change pas le code de base mais que je mets mes données (clinique/pharma/agro) non plus dans la colonne C mais dans la colonne P et bien la macro compte bien...

    Savez vous pourquoi?
    Ai-je mal adapté?
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  11. #11
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    du coup j'abandonne le truc c'est incompréhensible...

    Par contre Marc-L si tu repasse par ici ou si quelqu'un d'autre repasse et connait la réponse pouvez-vous répondre à ce post svp car ceci m'interesse:


    Merci Marc-L pour ton interet également,


    j'ai regardé et tester pour Instr

    j'ai fait un test comme ceci pour voir si cela marche et j'ai pris 20 chaines de caractère dont 5 avec le mot Agro dedans. Or il me revoit toujours 1 pour les 20 chaines alors qu'il devrait renvoyer 15 fois 0 et 5 fois 1 non?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Dim wkd As Workbook
    Set wkd = ThisWorkbook
    For Each cell In wkd.Sheets("liste 17025").Range("C3:C" & [C3].End(xlDown).Row)
    MsgBox "valeur" & InStr(1, cell.Value, Agro, 1)
    Next cell
    End Sub
    désolé de pas être bien fortiche mais bon c'est en patogeant qu'on apprend à nager mdrr
    Le InStr ne s'écrit pas comme ceci?

    Merci d'avance à tous
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

  12. #12
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    La fonction InStr renvoie la position du texte recherché dans une chaîne de caractères.
    Si il n'est pas trouvé, c'est la valeur zéro qui est retournée …

    Maintenant Agro est une variable tandis que "Agro" est du texte : et oui, les guillemets servent à quelque chose ‼
    Pourtant l'exemple de l'aide est suffisamment explicite …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  13. #13
    Membre éclairé
    Homme Profil pro
    autodidacte
    Inscrit en
    Novembre 2013
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 517
    Points : 684
    Points
    684
    Par défaut
    ah oui en effet! les guillemets bien vu ! j'avais oublié ceci!

    désolé mais l'exemple n'est pas disponible chez moi...

    merci
    Merci de cliquer sur pour chaque message vous ayant aidé
    puis sur pour clore cette discussion …

    C'est en récoltant les cailloux qu'on te jette que tu construiras ta future estrade...

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

Discussions similaires

  1. Compter des enregistrements selon différents critères
    Par nlbmoi dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 10/07/2015, 08h58
  2. [AC-2010] Compter des enregistrements selon 2 critères sur 2 champs différents
    Par nlbmoi dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 03/07/2015, 10h10
  3. [XL-2003] Compter des doublons selon un double critère
    Par jberto dans le forum Excel
    Réponses: 7
    Dernier message: 24/11/2011, 17h16
  4. masquer/afficher barre des menus selon critéres
    Par delg dans le forum Access
    Réponses: 1
    Dernier message: 22/09/2006, 11h50
  5. affichage des champs selon critère dans un formulaire
    Par emmablue dans le forum Access
    Réponses: 5
    Dernier message: 31/07/2006, 09h39

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