Titre du sujet : Re: Aide sur code par Eric le 14/05/2009 15:37:55
Bonjour à tous
Bonjour Kelly
La petite modif demandée ainsi que quelques explications pour le code.
On remet la cellule à "rien". Le Module modifié :
Option Explicit
Public KO As Boolean
Public ma_feuille As String
Public macol
Public maligne
Public trouve As Integer
Public valeur_cellule 'As String
Sub recherche()
Dim a As Integer
Dim i As Integer
Dim pos As Integer
'recherche de la colonne modifi�e
Select Case macol
Case 3, 7, 11, 15, 19, 23 'N� des colonnes "matin" ou "apr�m"
a = 3 'N� de la 1�re colonne
Case 5, 9, 13, 17, 21, 25 'N� des colonnes "matin" ou "apr�m"
a = 5 'N� de la 1�re colonne
End Select
'tests sur les 6 colonnes "matin" ou "apr�m"
For i = 0 To 5
If macol <> a + (i * 4) Then 'pas de test sur la colonne actuelle
If Worksheets(ma_feuille).Cells(maligne, a + (i * 4)) <> "" Then
If InStr(valeur_cellule, CStr(Worksheets(ma_feuille).Cells(maligne, a + (i * 4)))) <> 0 Then MsgBox "Ce mat�riel est d�j� r�serv� sur cette p�riode !": trouve = 1: ActiveCell.Value = "": Exit Sub
'test si dans la cellule actuelle il y a la chaine des 5 autres cellules => valeur_cellule = PC1+PC2 et les autres PC1 (exemple)
If InStr(CStr(Worksheets(ma_feuille).Cells(maligne, a + (i * 4))), valeur_cellule) <> 0 Then MsgBox "Ce mat�riel est d�j� r�serv� sur cette p�riode !": trouve = 1: ActiveCell.Value = "": Exit Sub
'test si dans les 5 autres cellules il y a la chaine de la cellule actuelle => valeur_cellule = PC1 et les autres PC1+PC2 (exemple)
End If
End If
Next i
End Sub
Sub materiel()
Dim i As Integer
Dim lalong As Integer
Dim valeur_cellule_intermediaire
Dim pos As Integer
'on d�coupe la cellule actuelle : PC1 + sono
If InStr(valeur_cellule, "+") <> 0 Then 'test si il y a un "+" dans la cellule actuelle
valeur_cellule_intermediaire = valeur_cellule
lalong = Len(valeur_cellule) 'nombre de caract�res
pos = InStr(valeur_cellule, "+") 'position du caract�re "+"
valeur_cellule = Left(valeur_cellule_intermediaire, pos - 2) 'r�cup�ration de la chaine qui se trouve � gauche du +, en otant l'espace
recherche
If trouve = 1 Then Exit Sub
valeur_cellule = Right(valeur_cellule_intermediaire, lalong - pos - 1) 'r�cup�ration de la chaine qui se trouve � droite du +, en otant l'espace
recherche
Else
recherche
End If
End Sub
Pour le code de la feuille, pas de modif.
Eric
|