erreur de compilation Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
r
r4944
Membre habitué
Membre habitué
Messages : 106
Inscrit le : 1 juin 2015
Version d'Excel : 2003

Message par r4944 » 30 mars 2016, 21:40

bonjour ,

j'ai essayé ce code qui me permet de faire une recherche sur une plage de données

j'ai eu un probléme de compilation à ce niveau la:
  If (InStr(Cell.Value), "*") > 0 And (Instr(Cell.Value), "**") > 0 then
Dim Feuille As Worksheet, Cell As Range, Plage As Range
    Dim Var1
 
    Set Feuille = Worksheets("SBR")
    With Feuille
     
        Set Plage = .Range("X3:AG3")
        For Each Cell In Plage
 
            If (InStr(Cell.Value), "*") > 0 And (Instr(Cell.Value), "**") > 0 then
           
            Significant_Recent_EN = "<br/>" & Sheets(1).Range("B45").Text & "<br/>" & Sheets(1).Range("B46").Text & "<br/>"
            
            Significant_Recent_FR = "<br/>" & Sheets(1).Range("E45").Text & "<br/>" & Sheets(1).Range("E46").Text & "<br/>"
            
            
            
            
        Next
    End With
    Set Feuille = Nothing
    Set Plage = Nothing

    
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'151
Appréciations reçues : 376
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 30 mars 2016, 22:06

bonsoir,

essaie ceci
  If  InStr(Cell.Value, "*") > 0 And Instr(Cell.Value, "**") > 0 then
r
r4944
Membre habitué
Membre habitué
Messages : 106
Inscrit le : 1 juin 2015
Version d'Excel : 2003

Message par r4944 » 6 avril 2016, 19:27

y't il une façon de regler ça ; le code fonctionne super bien seulement quand il s'agit d' une définition de (**) il m'affiche aussi la défintion d'une seule (*), alors qu'il devrait m'afficher seulement la défintion de (**) ;

voici mon code

 If Sheets(2).Cells(i, 23 + Exp).Value = "DNM" Then
                                If InStr(Sheets(2).Cells(3, 23 + Exp), "*") > 0 And Not Flag_1etoile Then
                                    Flag_1etoile = True
                                    Significant_EN = "<br/>" & Sheets(1).Range("B45").Text & "<br/>"
                                    significant_FR = "<br/>" & Sheets(1).Range("E45").Text & "<br/>"
                                End If
                                If InStr(Sheets(2).Cells(3, 23 + Exp), "**") > 0 And Not Flag_2etoiles Then
                                    Flag_2etoiles = True
                                    Recent_EN = "<br/>" & Sheets(1).Range("B46").Text & "<br/>"
                                    Recent_FR = "<br/>" & Sheets(1).Range("E46").Text & "<br/>"
                                End If
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'151
Appréciations reçues : 376
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 6 avril 2016, 19:32

bonsoir,

une proposition à tester
 If Sheets(2).Cells(i, 23 + Exp).Value = "DNM" Then
                                If InStr(Sheets(2).Cells(3, 23 + Exp), "**") > 0  Then
                                    Flag_2etoiles = True
                                    Recent_EN = "<br/>" & Sheets(1).Range("B46").Text & "<br/>"
                                    Recent_FR = "<br/>" & Sheets(1).Range("E46").Text & "<br/>"
                                elseIf InStr(Sheets(2).Cells(3, 23 + Exp), "*") > 0  Then
                                    Flag_1etoile = True
                                    Significant_EN = "<br/>" & Sheets(1).Range("B45").Text & "<br/>"
                                    significant_FR = "<br/>" & Sheets(1).Range("E45").Text & "<br/>"
                                End If
r
r4944
Membre habitué
Membre habitué
Messages : 106
Inscrit le : 1 juin 2015
Version d'Excel : 2003

Message par r4944 » 6 avril 2016, 19:52

Merci pour votre initiative , ça fonctionnme parfaitement est que vous pourriez m'expliquer c'etait quoi le probléme exatcement ?

aussi maintenant ça fonctionne avec les deux cas (*) et (**) mais j 'ai un autre cas avec les *** en même temps [Significant** and recent* experience in providing strategic advice, both in writing and orally, to senior management (Director General, DG equivalent or higher) in relation to IM/IT services and solutions.] il m'affiche seulemt la defintion des (**)
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'151
Appréciations reçues : 376
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 6 avril 2016, 22:09

Bonsoir,

le problème

l'instruction instr(x,"**") recherche la présence de 2 étoiles consécutives
l'instruction instr(x,"*") recherche la présence d'une étoile ce qui sera toujours vrai si la première recherche donne un résultat. quand il y a 2 étoiles, il y en a aussi une.


voici une adaptation du code qui permet de gérer la détection d'une étoile et de 2 étoiles.
 If Sheets(2).Cells(i, 23 + Exp).Value = "DNM" Then
                                If InStr(Sheets(2).Cells(3, 23 + Exp), "**") > 0  Then
                                    Flag_2etoiles = True
                                    Recent_EN = "<br/>" & Sheets(1).Range("B46").Text & "<br/>"
                                    Recent_FR = "<br/>" & Sheets(1).Range("E46").Text & "<br/>"
                                endif
                                if InStr(replace(Sheets(2).Cells(3, 23 + Exp), "**","##"),"*"") > 0  Then
                                    Flag_1etoile = True
                                    Significant_EN = "<br/>" & Sheets(1).Range("B45").Text & "<br/>"
                                    significant_FR = "<br/>" & Sheets(1).Range("E45").Text & "<br/>"
                                End If
r
r4944
Membre habitué
Membre habitué
Messages : 106
Inscrit le : 1 juin 2015
Version d'Excel : 2003

Message par r4944 » 6 avril 2016, 22:14

Merci beaucoup pour votre temps j'ai une erreur de syntaxe a ce niveau
  If InStr(replace(Sheets(2).Cells(3, 23 + Exp), "**", "##"),"*"") > 0  Then
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'151
Appréciations reçues : 376
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 6 avril 2016, 22:20

une faute de frappe
 If Sheets(2).Cells(i, 23 + Exp).Value = "DNM" Then
                                If InStr(Sheets(2).Cells(3, 23 + Exp), "**") > 0  Then
                                    Flag_2etoiles = True
                                    Recent_EN = "<br/>" & Sheets(1).Range("B46").Text & "<br/>"
                                    Recent_FR = "<br/>" & Sheets(1).Range("E46").Text & "<br/>"
                                endif
                                if InStr(replace(Sheets(2).Cells(3, 23 + Exp), "**","##"),"*") > 0  Then
                                    Flag_1etoile = True
                                    Significant_EN = "<br/>" & Sheets(1).Range("B45").Text & "<br/>"
                                    significant_FR = "<br/>" & Sheets(1).Range("E45").Text & "<br/>"
                                End If
r
r4944
Membre habitué
Membre habitué
Messages : 106
Inscrit le : 1 juin 2015
Version d'Excel : 2003

Message par r4944 » 6 avril 2016, 22:31

Merci Beaucoup h2so4 :)
Bonne soiree
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message