Re: Aide sur code
#11
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 145

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 14-05-2009 15h37
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


Hors Ligne
Rapport   Haut 

Re: Aide sur code
#12
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 145

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 15-05-2009 21h58
Bonsoir à tous
Bonsoir Kelly

Je n'étais pas très content de ma réponse d'hier, je te propose donc un petit fichier. Attention il faut recopier le :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
mavaleur = ActiveCell.Value
End Sub
ainsi que :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target(1).Value = "" Then Exit Sub

ma_feuille = ActiveSheet.Name
macol = Target.Column
maligne = Target.Row
valeur_cellule = Target.Value

materiel

End Sub
pour toutes les feuilles

Eric




Pièce jointe:
zip Réservation_salles_réunions_eric_03.zip   [ Taille: 42.11 Ko - Téléchargements: 499 ]
Hors Ligne
Rapport   Haut 

Re: Aide sur code
#13
Régulier XLPages

Inscription: 05/11/2008

Messages: 53

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 17-05-2009 16h14
Bonjour Eric,
Bonjour à tous,

Je te remercie infiniment pour ton aide et pour tes explications.
Merci d'avoir pris du temps pour m'aider sur mon fichier.

Kelly
Hors Ligne
Rapport   Haut 

Re: Aide sur code
#14
Régulier XLPages

Inscription: 05/11/2008

Messages: 53

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 22-06-2009 01h07
Bonjour Eric et bonjour au forum,
J'ai un problème sur mon fichier !
Il affiche bien le message quand deux personnes réservent le même matériel cependant il met le message également si on choisit la même heure ou le même nom.....alors que cela doit fonctionner seulement sur le matériel !
Comment faire ??
Merci d'avance pour votre aide!
Hors Ligne
Rapport   Haut 

Re: Aide sur code
#15
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 145

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 25-06-2009 22h48
Bonsoir à tous
Bonsoir Kelly

Avec du retard pour une réponse, désolé.

Je n'ai pas trop le temps pour l'instant, mais dès que cela se calme, je te proposerais quelque chose.

Tu auras peut être de l'aide d'une autre personne avant, sinon je ne te laisse pas tomber

Juste une idée, il suffit peut être de tester dans la "private sub Worksheet_Change" la ligne en question avec  : si (numligne+1) Mod 5 = 0 on exécute

Par contre j'ai vu un autre pb : 2 personnes peuvent-elles avoir le même matériel le matin, mais à des heures différentes ? si oui le code ne fonctionne pas correctement

Bonne soirée à tous

Eric

Hors Ligne
Rapport   Haut 

Re: Aide sur code
#16
Régulier XLPages

Inscription: 05/11/2008

Messages: 53

Système d'exploitation:
PC
Version Excel utilisée:
2003
Posté le : 28-06-2009 15h55
Bonjour à tous,
Bonjour Eric,

Merci beaucoup pour ton message !

Pour répondre à ta question, 2 personnes ne peuvent pas avoir le même matériel le matin (les horaires sont juste une indication de la réunion), c'est surtout pour le matériel pour indiquer que le PC1 par exemple ne peut pas être réservé ce jour là pour la matinée par exemple, l'autre personne ne peut prendre que le PC2 mais pas le PC1, PC1+sono...dans une autre salle pour cette même matinée.

Je ne sais pas si je suis bien claire ....

Merci d'avance.
Hors Ligne
Rapport   Haut 

Re: Aide sur code
#17
Semi pro XLPages

Inscription: 12/06/2008
De Ile de France Sud

Messages: 145

Système d'exploitation:
PC
Version Excel utilisée:
2003 _ 2010
Posté le : 02-07-2009 23h33
Bonsoir à tous
Bonsoir Kelly

Avec un peu de retard, voici en plus clair, ce que je t'ai dit :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target(1).Value = "" Then Exit Sub

ma_feuille = ActiveSheet.Name
macol = Target.Column
maligne = Target.Row
valeur_cellule = Target.Value

if (maligne+1) mod 5 = 0 then materiel

End Sub
si tu n'avais pas trouvé

Pour la réponse à ma question, c'est très clair

Eric
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes