Code vba RechercheMultiple (Fonction InStr)
Résolu/Fermé
Tshims
-
10 févr. 2016 à 18:42
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 12 févr. 2016 à 16:06
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 12 févr. 2016 à 16:06
A voir également:
- Code vba RechercheMultiple (Fonction InStr)
- Fonction si et - Guide
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
1 réponse
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 11/02/2016 à 09:36
Modifié par michel_m le 11/02/2016 à 09:36
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
11 févr. 2016 à 10:24
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.
11 févr. 2016 à 16:01
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.
11 févr. 2016 à 17:02
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
12 févr. 2016 à 09:27
Tu es génial, merci beaucoup encore un grand merci.
Impeccable!!!
Cordialement.
Modifié par Tshims le 12/02/2016 à 11:58
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.