Tester contenue d'une cellule et nom d'une feuille
Résolu
camcam1404
Messages postés
68
Statut
Membre
-
camcam1404 Messages postés 68 Statut Membre -
camcam1404 Messages postés 68 Statut Membre -
Bonjour,
J'aimerais effectué une instruction à condition que la valeur d'une cellule soit contenue dans le nom de la feuille.
J´ai essayé le code ci-dessous sans résultat. Quelqu'un voit d'où vient le problème ?
Le code fonctionne si j'écrit If REF.Cells(i, 1) =O.Name Then mais ce n'est pas exactemment ce que je souhaite.
J'aimerais effectué une instruction à condition que la valeur d'une cellule soit contenue dans le nom de la feuille.
J´ai essayé le code ci-dessous sans résultat. Quelqu'un voit d'où vient le problème ?
Le code fonctionne si j'écrit If REF.Cells(i, 1) =O.Name Then mais ce n'est pas exactemment ce que je souhaite.
Sub jpp()
Dim i As Long
Dim Lastline As Long
Dim O As Worksheet
Set REF = Worksheets("REF")
Lastline = REF.Range("A1").End(xlDown).Row
For Each O In ActiveWorkbook.Worksheets
If UCase(O.Name) Like "*RES*" Then
For i = 2 To Lastline
<bold> If REF.Cells(i, 1) =Right( O.Name ,10) Then => ligne qui pose problème</bold>
SNzusuchen = REF.Cells(i, 3)
Set rangezuabsuchen = O.Columns(2)
Set gefunden = rangezuabsuchen.Cells.Find(what:=SNzusuchen)
If gefunden Is Nothing Then
REF.Cells(i, 5) = 0
Else
REF.Cells(i, 5) = 1
End If
End If
Next i
End If
Next O
End Sub
1 réponse
-
Bonjour Camcam, bonjour le forum,
Il y a un espace en trop entre la parenthèse (ouverture après Right) et O (de O.Name). Si tu le supprimes la ligne ne plante plus. Mais je ne sais pas si la résultat escompté est conforme ?!...
Ton code modifié :Sub jpp() Dim REF As Worksheet Dim Lastline As Long Dim O As Worksheet Dim I As Long Dim rangezuabsuchen As Range Dim gefunden As Range Set REF = Worksheets("REF") Lastline = REF.Range("A1").End(xlDown).Row For Each O In ActiveWorkbook.Worksheets If UCase(O.Name) Like "*RES*" Then For I = 2 To Lastline If REF.Cells(I, 1) = Right(O.Name, 10) Then SNzusuchen = REF.Cells(I, 3) Set rangezuabsuchen = O.Columns(2) Set gefunden = rangezuabsuchen.Cells.Find(what:=SNzusuchen) If gefunden Is Nothing Then REF.Cells(I, 5) = 0 Else REF.Cells(I, 5) = 1 End If End If Next I End If Next O End Sub
-
-
Oui si les chiffres sont et les points sont considérés comme des caractères.
Le nom des feuilles est du type: REF_01.01.2017
Et ce le terme 01.01.2017 que je veux prendre en compte avec la fonction Right(O.Name,10)- Re,
Tu compares une chaîne de caractère, tirée du nom d'un onglet, avec une date dans une cellule. Attention ! Les dates s'affichent selon le format dans la cellule où elles se trouvent. Tu peux avoir écrit en A1 : 10.01.2017 alors que Range("A1").Value renvoie 10/01/2017.
Dans ce cas la comparaison :If REF.Cells(I, 1) = Right(O.Name, 10) Then
peux ne pas fonctionner.
Soit tu compares deux dates :If REF.Cells(I, 1) = CDate(Right(O.Name, 10)) Then
Soit tu compares deux chaines de caractères :If CStr(REF.Cells(I, 1)) = Right(O.Name, 10) Then
Mais tu risques d'avoir encore le problème d'inversion Mois/Jour...
-
-