optimiser un code....

  • Initiateur de la discussion Initiateur de la discussion natorp
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

natorp

XLDnaute Barbatruc
Bonsoir à tous et toutes

j'ai le code suivant qui m'affiche un userform si le critère cellule ="" quand je clique sur sur cellule choisie
or il m'affiche autant de fois le userform qu'il y a de cellule ="" dans les différentes feuilles du classeur
j'aimerais que le nom des différentes feuilles s'affichent dans un seul userform


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B21:AF36")) Is Nothing Then
If Target.Value = "x" Or Target.Value = "" Then Exit Sub
x = Target.Column
Vdate = Cells(20, x)
y = Target.Row
Horaire = Cells(x, 1)
For j = 21 To 24
Feuille = Cells(j, 33)
With Sheets(Feuille)
If .Cells(y, x) = "" Then
With UserForm2
.Caption = "LES DISPONIBILITES"
.Label1.Caption = "Le " & Vdate & vbCrLf & vbCrLf & "Dans ce créneau" & _
vbCrLf & "La salle suivante :" & vbCrLf & Feuille & _
vbCrLf & "est disponible"
.Show
End With
End If
End With
Next
End If
End Sub

Merci de votre aide, cordialement
Gérard
 
Re : optimiser un code....

Bonjour Gerard,

Avec le fichier on pourra mieux imaginer ce qui se passe.
or il m'affiche autant de fois le userform qu'il y a de cellule ="" dans les différentes feuilles du classeur
j'aimerais que le nom des différentes feuilles s'affichent dans un seul userform
Pour ma part c'est pas très clair.
Explique ce que tu veux faire exactement.

Bonne soirée.
 
Re : optimiser un code....

Bonsoir,
Pas pris le temps de revoir ton fichier...
Je te laisse réadapter le message à ta convenance
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
[COLOR="Blue"]If Target.Count > 1 Then Exit Sub[/COLOR]
If Not Intersect(Target, Range("B21:AF36")) Is Nothing Then
    If Target.Value = "x" Or Target.Value = "" Then Exit Sub
    x = Target.Column
    Vdate = Cells(20, x)
    y = Target.Row
   [COLOR="Blue"] Horaire = Cells(y, 1)[/COLOR]
    For j = 21 To 23
    feuille = Cells(j, 33)
        With Sheets(feuille)
             If .Cells(y, x) = "" Then
                [COLOR="Blue"]Message = Message & feuille & vbCrLf[/COLOR]
             End If
        End With
    Next
[COLOR="Blue"]    With UserForm2
        .Caption = "LES DISPONIBILITES"
        .Label1.Caption = "Le " & Vdate & vbCrLf & vbCrLf & "Salles disponibles" & vbCrLf & _
            "dans le créneau " & Horaire & vbCrLf & vbCrLf & Message
        .Show
    End With[/COLOR]
End If

End Sub
A+
kjin
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
15
Affichages
830
Réponses
9
Affichages
511
Réponses
4
Affichages
527
Retour