Rapport de message :*
 

Re: Aide sur code

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