Microsoft 365 Duplication de tableau après utilisation d'un Userform

meyscal

XLDnaute Occasionnel
Bonsoir le forum,

Je rencontre un problème lors de l'utilisation d'un USF, il se créé un autre tableau par-dessus le premier qui au départ prend le même nom (Tableau1). Donc j'ai 2x Tableau1, ce que je pensais impossible jusque là.
A l'utilisation suivante le USF fonctionne encore mais renomme ensuite en Tableau1_1, ce qui rend après l'utilisation impossible car le tableau n'est plus trouvé. Pire, les formules ne trouvent plus la référence de colonne et passent toutes en "#REF!"

1683228990784.png
1683229019493.png



J'ai adapté à mon besoin un prg de Mr Boisgontier (RIP) et je pense que le problème se situe au niveau de la fonction "Redim Preserve" mais je suis loin d'être expert comme certains le savent déjà 😏

1683229080443.png


Je mets le tableau ici que certains connaissent déjà.
Le USF concerné se nomme "USF_EditAlerte" et le fonction "Redim Preserve" se trouve dans le Sub "Affiche".

Si quelqu'un veut bien éclairer ma lanterne avec de préférence quelques explications.

Merci par avance
 

Pièces jointes

  • meyscal.xlsm
    113.9 KB · Affichages: 4

meyscal

XLDnaute Occasionnel
Non ce ,n'est pas ce que je voulais dire, tu as mal compris je pense, ou bien je me suis mal exprimé. J'aimerais garder les avantages d'un tableau structuré; à savoir faire référence à un tableau ou ses colonnes facilement, différenciation des lignes avec couleur pour les miros comme moi 🥸 (oui faisable avec une MFC), la propagation des formules en automatique sans passer par "Filldown", etc ...
Les admins pourront accéder au tableau et pour les stats je m'occuperai de faire les TCD et les graph.

@cp4 : à ce propos, sorry de pas avoir répondu à cette question avant : les formules pour semaine, mois, année sont là justement pour ça = TCD et graph et non pour VBA. L'idée est (en plus d'en faire un programme de saisie, consultation et édition) de créer des indicateurs de suivi imprimables car affichables avec évolution et courbe de tendance (graph), délai de traitement, stats diverses : secteurs, zones les plus remontés donc les plus dangereux, causes les plus fréquentes et j'en passe ...

Le programme sera en "application.visible= false" d'où l'onglet "logo" qui sera visible en mode subliminal le temps que le 1er USF soit chargé. Comme ça on reste très corporate !! 😁

Edit : @cp4 je pense que tu as bien cerné ce que je cherche à faire et je parlais des cbx triés ce que tu as fait avant que je n'en parle 😁 (La cbx "mois" est juste triée à l'initialisation et se "détrie" ensuite.
Par contre la modif et la suppression ne fonctionne pas même après suppression de Tableau1 dans le gestionnaire de noms et renommage de Tableau1_1 en Tableau1.
Evidemment j'ai également transformé tous les codes avec Tableau1_1 mais sans succès.
En fait je suis vraiment nul mais j'ai bientôt une formation et toujours l'envie d'apprendre !
 
Dernière édition:

cp4

XLDnaute Barbatruc
Non ce ,n'est pas ce que je voulais dire, tu as mal compris je pense, ou bien je me suis mal exprimé. J'aimerais garder les avantages d'un tableau structuré; à savoir faire référence à un tableau ou ses colonnes facilement, différenciation des lignes avec couleur pour les miros comme moi 🥸 (oui faisable avec une MFC), la propagation des formules en automatique sans passer par "Filldown", etc ...
Les admins pourront accéder au tableau et pour les stats je m'occuperai de faire les TCD et les graph.

@cp4 : à ce propos, sorry de pas avoir répondu à cette question avant : les formules pour semaine, mois, année sont là justement pour ça = TCD et graph et non pour VBA. L'idée est (en plus d'en faire un programme de saisie, consultation et édition) de créer des indicateurs de suivi imprimables car affichables avec évolution et courbe de tendance (graph), délai de traitement, stats diverses : secteurs, zones les plus remontés donc les plus dangereux, causes les plus fréquentes et j'en passe ...

Le programme sera en "application.visible= false" d'où l'onglet "logo" qui sera visible en mode subliminal le temps que le 1er USF soit chargé. Comme ça on reste très corporate !! 😁
Heu... perso, j'attends ton retour par rapport au fichier joint du post#12
 

meyscal

XLDnaute Occasionnel
Re donc c'est le les tableaux plage nommée qu'il faut supprimer via la liste des noms definis . Ainsi que la procédure dans ton userform Initialize qui crée la plage nommée
Jean marie

oui exactement et je pensais y être parvenu avec le code en message #7
Heu... perso, j'attends ton retour par rapport au fichier joint du post#12
alors c'est parfait je viens de le faire ;) = voir "Edit" message #16
 

cp4

XLDnaute Barbatruc
oui exactement et je pensais y être parvenu avec le code en message #7

alors c'est parfait je viens de le faire ;) = voir "Edit" message #16
@meyscal: J'ai mis à jour le fichier du post#12, en suivant le conseil de @ChTi160, supprimées les noms des plages nommées et ne laisser que ce qui concerne le tableau structuré.
Bonne soirée.

edit: je laisse le soin de faire le ménage des lignes de code neutralisées (transformer en commentaire)
 

ChTi160

XLDnaute Barbatruc
Re
J'ai dû Modifier quelque Trucs (USF_EditAlerte) Lol
Lors du Click sur la ListBox1, cela occasionné la Modification des "TextBox" entêtes (TextBox15 etc )
Je les ai renommé "TBx_Entete_1 à TBx_Entete_14
J'ai aussi limité la Boucle à 14 plutôt qu'au NbCol (si je ne me trompe Lol)
VB:
 For i = 1 To 14 'NbCol
    tmp = Me.ListBox1.Column(i - 1)
    If Not IsError(tmp) Then Me("textbox" & i) = tmp
  Next i
  Me.Enreg = Me.ListBox1.Column(NbCol)
J'ai aussi mis en place ce que j'avais proposé (un Label Transparent) pour éviter de Mettre le TextBox1 à Enabled=False
Bonne Fin de Soirée
Jean marie
 

Pièces jointes

  • meyscal2_cp4 (Chti160).xlsm
    141.1 KB · Affichages: 4

meyscal

XLDnaute Occasionnel
je suis en train de regarder mais la modif et la suppression plantent sur ces lignes.
Je pense que pour la suppression le souci se situe là :

1683369610086.png


donc 21 colonnes ... et :
1683369663370.png


vu qu'il n'y a que 14 textbox ...

Ce qui sûrement provoquait ça (que je n'avais même pas remarqué) :

Lors du Click sur la ListBox1, cela occasionné la Modification des "TextBox" entêtes (TextBox15 etc )

J'avais sinon encore une référence à "Tableau1" au lieu de "Tableau1_1" maintenant.

En remplaçant

1683369663370.png


par

1683369902487.png


le débogueur s'arrête sur cette ligne :

1683370276481.png


j'ai supprimé la ligne qui selon moi ne servait à rien vu qu'on a ceci :

1683370363756.png


Du coup c'est ok

Reste le souci lors de la validation ...
 

cp4

XLDnaute Barbatruc
Bonjour cp4,
pardon je ne vois pas de fichier dans le post concerné (#23)
Ma foi, si je te dis post 12, et tu comprends post 23, Je ne peux pas grand chose pour toi;)

Je constate aussi que tu ne prends pas en compte les corrections apportées à tes codes.
En effet, je vois que cette ligne traine dans le code de tous tes objets
VB:
If ActiveWorkbook.Name <> ThisWorkbook.Name Then ThisWorkbook.Activate
 
Dernière édition:

cp4

XLDnaute Barbatruc
Je pense que pour la suppression le souci se situe là :

Regarde la pièce jointe 1169665

donc 21 colonnes ... et :
Regarde la pièce jointe 1169666

vu qu'il n'y a que 14 textbox ...

Ce qui sûrement provoquait ça (que je n'avais même pas remarqué) :



J'avais sinon encore une référence à "Tableau1" au lieu de "Tableau1_1" maintenant.

En remplaçant

Regarde la pièce jointe 1169666

par

Regarde la pièce jointe 1169667

le débogueur s'arrête sur cette ligne :

Regarde la pièce jointe 1169669

j'ai supprimé la ligne qui selon moi ne servait à rien vu qu'on a ceci :

Regarde la pièce jointe 1169670

Du coup c'est ok

Reste le souci lors de la validation ...
Tu fais du n'importe quoi, est-ce que tu essaies de comprendre les codes proposés.
Pour supprimer une carte
Code:
Private Sub B_sup_Click()
   If ActiveWorkbook.Name <> ThisWorkbook.Name Then ThisWorkbook.Activate
   If Me.Enreg <> "" Then
      If MsgBox("Etes vous sûr de vouloir supprimer la carte " & Me.TextBox1 & " ?", vbYesNo) = vbYes Then
'ton tableau se nomme Tableau1_1
         Range("Tableau1_1").ListObject.ListRows(Me.Enreg).Delete
         Me.Enreg = ""

         UserForm_Initialize
         raz
         '    Me.Enreg = Range(NomTableau).Rows.Count + 1

         MsgBox ("La carte a bien été supprimée"), vbInformation

      End If
   End If
   Affiche
   Me.Lbl_Info.Caption = Me.ListBox1.ListCount
   Me.TextBox1.Enabled = False
   Me.carte_modif = ""
End Sub
 

meyscal

XLDnaute Occasionnel
Ma foi, si je te dis post 12, et tu comprends post 23, Je ne peux pas grand chose pour toi;)
Pardon j'avais mal compris alors. Je pensais que tu voulais dire que tu mettais la version corrigée du poste #12 mais ne voyant rien je me suis dit sue tu l'avais zappé...

Je constate aussi que tu ne prends pas en compte les corrections apportées à tes codes.
Bah n'ayant pas vu le fichier et @ChTi160 en ayant posté un, je suis parti sur le sien

If ActiveWorkbook.Name <> ThisWorkbook.Name Then ThisWorkbook.Activate
Effectivement comme je l'avais déjà expliqué dès que j'ai plusieurs fichiers Excel ouverts je finis par avoir le message "l'indice n'appartient pas à la sélection". Avec cette ligne de code plus de problème.
 

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 266
Membres
103 167
dernier inscrit
miriame