Bonsoir @gaby.jvx
Il manque quelque chose dans ton message pour que celui fonctionne correctement.
NB: Conseil en passant
Ne jamais publié son email sur un forum public.
Private Sub CommandButton8_Click()
'Plan Tables
range("A520").Select
'Code qui trie les réservants par ordre de Tables puis complètre le plan de table
Dim Arr, S$, SS$, i%, k%, iLR%, Obj As OLEObject, rng As range
Worksheets("Feuil1").Protect Password:="BJ/CROUZET", UserInterfaceOnly:=True
TriS 3
DoEvents
iLR = Cells(1).End(xlDown).Row
Arr = range(Cells(2, 1), Cells(iLR, 4)).Value
k = 1
On Error GoTo GESTERR
For i = 1 To UBound(Arr)
SS = ""
If k <> Arr(i, 3) Then
Set Obj = Worksheets("Feuil1").OLEObjects("TextBox" & k)
S = Left(S, Len(S) - 1)
Obj.Object.Value = S
S = ""
k = Arr(i, 3)
SS = IIf(Arr(i, 4) > 1, " (" & Arr(i, 4) & ")", "")
Prenom = Arr(i, 2)
Init = Left(Prenom, 1) '1° lettre du Prénom
S = S & Arr(i, 1) & " - " & Init & SS & vbCrLf
Else
k = Arr(i, 3)
SS = IIf(Arr(i, 4) > 1, " (" & Arr(i, 4) & ")", "")
Prenom = Arr(i, 2)
Init = Left(Prenom, 1) '1° lettre du Prénom
S = S & Arr(i, 1) & " - " & Init & SS & vbCrLf
End If
Next
Set Obj = Worksheets("Feuil1").OLEObjects("TextBox" & k)
Obj.Object.Value = Left(S, Len(S) - 1)
TriS 16
For Each oobjet In Me.OLEObjects
If TypeOf oobjet.Object Is msforms.TextBox Then
If oobjet.Object.Value = vbNullString Then oobjet.Visible = False Else oobject.Visible = True
End If
Next oobjet
Exit Sub
GESTERR:
Resume Next
End Sub
Bonjour,
Voici une solution : Masquer les Textbox vides
CordialementVB:Private Sub CommandButton8_Click() 'Plan Tables range("A520").Select 'Code qui trie les réservants par ordre de Tables puis complètre le plan de table Dim Arr, S$, SS$, i%, k%, iLR%, Obj As OLEObject, rng As range Worksheets("Feuil1").Protect Password:="BJ/CROUZET", UserInterfaceOnly:=True TriS 3 DoEvents iLR = Cells(1).End(xlDown).Row Arr = range(Cells(2, 1), Cells(iLR, 4)).Value k = 1 On Error GoTo GESTERR For i = 1 To UBound(Arr) SS = "" If k <> Arr(i, 3) Then Set Obj = Worksheets("Feuil1").OLEObjects("TextBox" & k) S = Left(S, Len(S) - 1) Obj.Object.Value = S S = "" k = Arr(i, 3) SS = IIf(Arr(i, 4) > 1, " (" & Arr(i, 4) & ")", "") Prenom = Arr(i, 2) Init = Left(Prenom, 1) '1° lettre du Prénom S = S & Arr(i, 1) & " - " & Init & SS & vbCrLf Else k = Arr(i, 3) SS = IIf(Arr(i, 4) > 1, " (" & Arr(i, 4) & ")", "") Prenom = Arr(i, 2) Init = Left(Prenom, 1) '1° lettre du Prénom S = S & Arr(i, 1) & " - " & Init & SS & vbCrLf End If Next Set Obj = Worksheets("Feuil1").OLEObjects("TextBox" & k) Obj.Object.Value = Left(S, Len(S) - 1) TriS 16 For Each oobjet In Me.OLEObjects If TypeOf oobjet.Object Is msforms.TextBox Then If oobjet.Object.Value = vbNullString Then oobjet.Visible = False Else oobject.Visible = True End If Next oobjet Exit Sub GESTERR: Resume Next End Sub
Bonjour
Merci pour votre aide.
Il y a un problème, certaines tables vides ne sont pas effacées.
Avant de demander de l'aide sur le forum, j'avais fait un test avec des Msgbox pour indiquer tables vides et tables occupées, et j'avais le même problème.
On dirait que certaines tables vides , ont quelque chose , qui les fait considérer comme renseignées !
Voir la photo jointe avec le plan créé avec le bouton de commande Plan des tables avec le code modifié comme vous me l'avez envoyé!
Voyez si vous pouvez trouver d'où vient cette anomalie ?
Les propriétés etc ... je ne vois pas.
D'autre part la partie du code qui efface les tables, je pense qu'il vaut peut-être mieux la mettre dans les codes de chacun des deux boutons impression (Format A4 et Affiche).
Car il est nécessaire que les tables vides ne soient pas imprimées, mais il ne faut pas qu'elles disparaissent des 42 tables du plan en affichage sur l'ordinateur. En effet si elles disparaissent, il m'est impossible de rajouter des participants sur ces tables disparues!
Encore merci
Bonsoir @gaby.jvx
Il manque quelque chose dans ton message pour que celui fonctionne correctement.
NB: Conseil en passant
Ne jamais publié son email sur un forum public.
OK. Bien recu.Bonsoir @gaby.jvx
Il manque quelque chose dans ton message pour que celui fonctionne correctement.
NB: Conseil en passant
Ne jamais publié son email sur un forum public.
BonsoirBonsoir,
1. Dans votre image "PLAN TABLES VIDES EFFACEES.jpg", on voit bien les tirets séparant chaque nom dans les Textbox (j'imagine qu'une table avec une seule personne, ça doit être très rare).
2. Il suffit de cliquer à nouveau sur le bouton "plan de table", non ? ... et Alors elles apparaîtront toutes si elles sont occupées.
Quel intérêt de réafficher des tables vides ?
Sinon, il suffit de demander au bouton des réafficher toutes les Textbox existantes (propriété .visible à True)
Cordialement,
C'était donc ce qui manquait dans ton message#1La Charte¸ mantra posé sur les tables de chevet des XLDNautes à dit:1.3 – Lorsqu’on rentre sur un fil, comme dans la vie de tous les jours, on est poli en disant « Bonjour ».