Code vba RechercheMultiple (Fonction InStr)
Résolu
Tshims
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Voici mon code vba ci-dessous, le problème est qu'il detecte seulement la première chaine de caractère càd "Blayais" pas les 4 autres.
Sub SitesSDIN()
nomcible = ActiveWorkbook.Name
Workbooks(nomcible).Sheets("Feuille1").Select
Set f2 = Sheets("Feuille1")
LastLine2 = f2.Cells(Columns(1).Cells.Count, 3).End(xlUp).Row
For lig = 3 To LastLine2
SiteSDIN = "Blayais, Dampierre, Gravelines, Nogent, Tricastin"
If InStr(SiteSDIN, f2.Range("A" & lig)) = 1 Then
f2.Range("H" & lig) = "Oui"'
Else
f2.Range("H" & lig) = "Non"
End If
Next lig
End Sub
Merci d'avancé et Bien Cordialement.
Voici mon code vba ci-dessous, le problème est qu'il detecte seulement la première chaine de caractère càd "Blayais" pas les 4 autres.
Sub SitesSDIN()
nomcible = ActiveWorkbook.Name
Workbooks(nomcible).Sheets("Feuille1").Select
Set f2 = Sheets("Feuille1")
LastLine2 = f2.Cells(Columns(1).Cells.Count, 3).End(xlUp).Row
For lig = 3 To LastLine2
SiteSDIN = "Blayais, Dampierre, Gravelines, Nogent, Tricastin"
If InStr(SiteSDIN, f2.Range("A" & lig)) = 1 Then
f2.Range("H" & lig) = "Oui"'
Else
f2.Range("H" & lig) = "Non"
End If
Next lig
End Sub
Merci d'avancé et Bien Cordialement.
A voir également:
- Code vba RechercheMultiple (Fonction InStr)
- Code ascii - Guide
- Fonction si et - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
1 réponse
Bonjour
essaies
Michel
essaies
Option Explicit
'------------
Sub SitesSDIN()
Dim Lastline2 As Integer, Lig As Integer
Dim SiteSDIN, Cptr As Byte
Application.ScreenUpdating = False
SiteSDIN = Array("Blayais", "Dampierre", "Gravelines", "Nogent", "Tricastin")
With ActiveWorkbook.Sheets("Feuille1")
Lastline2 = Cells(Columns(1).Cells.Count, 3).End(xlUp).Row
For Lig = 3 To Lastline2
For Cptr = 0 To UBound(SiteSDIN)
If .Cells(Lig, "A") = SiteSDIN(Cptr) Then
.Cells(Lig, "H") = "oui"
Exit For
End If
Next Cptr
If .Cells(Lig, "H") = "" Then .Cells(Lig, "H") = "non"
Next Lig
.Activate
End With
End Sub
Michel
Merci beaucoup pour ta réponse, malgré que j'avais trouvé une solution hier soir. En impliquant de Or dans mon If. ça fait toujours du bien d'avoir plusieurs solutions.
J'ai une demandé supplémentaire, exemple si mes données : SiteSDIN = Array("Blayais", "Dampierre", "Gravelines", "Nogent", "Tricastin")
étaient placées dans une feuille; par exemple colonne D:
D1 : Blayais
D2 : Dampierre
D3 : Gravelines
D4 : Nogent
D5 : Tricastin
Que ce qui va changer dans le code par j'ai une erreur au niveau de cette ligne : For Cptr = 0 To UBound(SiteSDIN)
Il ne voit pas le tableau et une chose mes lignes pourrait changer dans l'avenir donc il faudra une boucle : While xxx <> pour détecter les cellules non vides (Pour l'instant c'est que 5 lignes).
Merci d'avancé et Cordialement.
la solution par liste dans la feuille est pour moi la meilleure
j'ai fait une petite maquette
dans la colonne D on peut ajouter ou enlever une centrale
dans la colonne A j'ai 2 sites non inscrits en col D
Tu es génial, merci beaucoup encore un grand merci.
Impeccable!!!
Cordialement.
C'est encore moi, tu pourras jeter un oeil sur mon code ci-dessous:
Mes données sont :
A1 : A&K-CYCLADES-01.03
A2:EPSILON2
A3: ECLAT-01.00
A4: VisuSM-01.06
A5: Portail
A6: Portail-01.05
Je souhaite enlever le "-" et caractère numérique donc ce qui donne :
A1 : A&K-CYCLADES
A2:EPSILON2
A3: ECLAT
A4: VisuSM
A5: Portail
A6: Portail
En version formule ça donne : SIERREUR(GAUCHE(B111;TROUVE("-";B111;NBCAR(B111)-5)-1);B111))
Voici mon code actuel mais il ne fait pas ce que je souhaite obtenir:
ss = StrReverse(s)
' r = rang du "-" dans ss
r = InStr(1, ss, "-")
' si r non nul et égal à n et r = 6 alors
' si le caractère précédent le "-" dans ss est numérique alors
' s = s sans les n derniers caractères
If r <> 0 And r = n Then 'r <> 0 And r = n
If IsNumeric(Mid(ss, r - 1, 1)) Then
s = Left(s, Len(s) - n)
Else
s = s
End If
Merci d'avancé et Cdlmt.