message d'erreur sur macro USERFORM lors de la suppression d'une donnée

letroubadour

XLDnaute Occasionnel
BONJOUR au forum

j'ai voulu apporter quelques modif a mon fichier d'origine, a savoir ajout de la partie droite du formulaire qui incrémente la feuille 3 qui n'existait pas

j'ai modifié tout ce que je pouvait et qui était à mon niveau mais j'ai un message d'erreur qui apparait

si je vais dans le formulaire , je sélectionne un agrément , les renseignements correspondant s'affichent ;
C'est lorsque je veux en supprimer un que ça bug , a priori sur le tri des données en 6° ligne

je joints mon fichier en PJ

merci


RAPHAEL

PHP:
Private Sub Tri_agrements()
  ' Tri les numeros agrements
    Application.ScreenUpdating = False
    xlgn = WS.Range("B" & Rows.Count).End(xlUp).Row
    Set rng = WS.Range("B3:G" & xlgn)
    rng.Sort Key1:=Range("B3"), Order1:=xlAscending
    Application.ScreenUpdating = True
End Sub
 

Pièces jointes

  • Copie.xlsm
    120.9 KB · Affichages: 66
  • Copie.xlsm
    120.9 KB · Affichages: 76
  • Copie.xlsm
    120.9 KB · Affichages: 68

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : message d'erreur sur macro USERFORM lors de la suppression d'une donnée

Bonjour Raphael,
Code:
Private Sub Tri_agrements()
  ' Tri les numeros agrements
  ' il manque la ligne ci-dessous dans ton code ---------------
Set WS = ThisWorkbook.Worksheets("Feuil1")
  ' ---------------------------------------------
    Application.ScreenUpdating = False
    xlgn = WS.Range("B" & Rows.Count).End(xlUp).Row
    Set rng = WS.Range("B3:G" & xlgn)
    rng.Sort Key1:=Range("B3"), Order1:=xlAscending
    Application.ScreenUpdating = True
End Sub
à+
Philippe
 

letroubadour

XLDnaute Occasionnel
Re : message d'erreur sur macro USERFORM lors de la suppression d'une donnée

bonsoir

J'ai essayé mais toujours la même ligne bloque

PHP:
rng.Sort Key1:=Range("B3"), Order1:=xlAscending

Ne faut il pas faire la modif en prenant en compte la feuille 3 ?

je suis pas assez caler , je ne comprends même pas la commande

merci

RAPHAEL
 
Dernière édition:

Paf

XLDnaute Barbatruc
Re : message d'erreur sur macro USERFORM lors de la suppression d'une donnée

Bonjour à tous

La feuille est protégée!

même en manuel on ne peut trier un tableau. Il faudrait déprotéger avant le tri puis reprotéger .

Bonne suite
 

letroubadour

XLDnaute Occasionnel
Re : message d'erreur sur macro USERFORM lors de la suppression d'une donnée

voici le fichier en PJ

comme précédemment j'ai essayé pour qu'un trie se fasse sur la feuill1 et feuill3, maintenant c'est la USERFORM qui ne veux plus s'ouvrir

code du trie , il doit y avoir des erreurs je pense

HTML:
Private Sub Tri_agrements()
  ' Tri les numeros agrements
    Application.ScreenUpdating = False
    With WS
        Set WS = ThisWorkbook.Worksheets("Feuil1")
        xlgn = WS.Range("B" & Rows.Count).End(xlUp).Row
        Set rng = WS.Range("B3:G" & xlgn)
        rng.Sort Key1:=Range("B3"), Order1:=xlAscending
    End With
     Set WS = ThisWorkbook.Worksheets("Feuil3")
        xlgn = WS.Range("B" & Rows.Count).End(xlUp).Row
        Set rng = WS.Range("B3:G" & xlgn)
        rng.Sort Key1:=Range("B3"), Order1:=xlAscending
    Application.ScreenUpdating = True
End Sub

Merci

RAPHAEL
 

Pièces jointes

  • Copie (1).xlsm
    119.8 KB · Affichages: 60
  • Copie (1).xlsm
    119.8 KB · Affichages: 55
  • Copie (1).xlsm
    119.8 KB · Affichages: 47

ChTi160

XLDnaute Barbatruc
Re : message d'erreur sur macro USERFORM lors de la suppression d'une donnée

Bonsoir
Bonsoir le fil
Bonsoir el forum
ATTENTION !!! tes feuilles sont protégées ... donc il faut déprotéger la feuille avant de travailler dessus et ensuite la protéger a nouveau
un code qui semble fonctionner
Code:
Private Sub Tri_agrements(ByVal Sht_Name as string)
Set WS = Worksheets(Sht_Name)
  ' Tri les numeros agrements
    Application.ScreenUpdating = False
With Ws
    .Unprotect "281"
    xlgn = .Range("B" & .Rows.Count).End(xlUp).Row
    Set rng = .Range("B3:G" & xlgn)
    rng.Sort Key1:=.Range("B3"), Order1:=xlAscending
   .Protect "281"
End with
    Application.ScreenUpdating = True
End Sub
a adapter pour les deux feuilles !
tu peux même utiliser la procédure avec un argument Feuil
Bonne fin de Soirée
Amicalement
Jean marie
Bonne fin de Soirée
 
Dernière édition:

letroubadour

XLDnaute Occasionnel
Re : message d'erreur sur macro USERFORM lors de la suppression d'une donnée

Merci Jean-Marie

je suis vraiment débutant en macro

peux tu, si tu as un moment, mettre la macro pour les 2 feuilles dans le fichier joint précédemment ?

je n'arrive pas à faire fonctionner le code fourni ;

Merci


RAPHAEL
 

letroubadour

XLDnaute Occasionnel
Re : message d'erreur sur macro USERFORM lors de la suppression d'une donnée

bonjour Jean Marie

je repond avant de partir au boulot , je testerai les fichiers ce soir

ATTENTION !!! tes feuilles sont protégées ... donc il faut déprotéger la feuille avant de travailler dessus et ensuite la protéger a nouveau
un code qui semble fonctionner

je comprends pas pourquoi

lorsque j'ouvre la macro je la supprime te lorsque j'appuie sur sur quitter je la reprotège, est ce que ca ne fait pas des doublons ?

merci


RAPHAEL
 

ChTi160

XLDnaute Barbatruc
Re : message d'erreur sur macro USERFORM lors de la suppression d'une donnée

Bonjour
Bonjour le fil
Bonjour le forum

excuse moi mais je ne comprends pas ce que tu veux dire (peut être l'heure lol) ?????

je comprends pas pourquoi
lorsque j'ouvre la macro je la supprime te lorsque j'appuie sur sur quitter je la reprotège, est ce que ca ne fait pas des doublons ?
peux tu être plus précis ?
Merci par avance
Amicalement
Jean Marie
 

letroubadour

XLDnaute Occasionnel
Re : message d'erreur sur macro USERFORM lors de la suppression d'une donnée

OK Jean-Marie


ça semble fonctionner, il a juste fallut que je ne protège pas la les feuilles à la fin de la macro car ça se fait lorsque je quitte le formulaire.

Maintenant j'ai autre chose a te demander , toi ou quelqu'un d'autre .

Lorsque que je supprime un agrément via le formulaire , celui-ci est bien supprimer mais mon tableau ne conserve
pas son format

Au départ mon tableau allait jusqu'à la ligne 301 maintenant on est à la ligne 295 et ça remonte au fur et a mesure que je supprime des lignes.

Comment puis je rétablir ça ?

HTML:
Private Sub Cmdsupprimer_Click()
  ' Confirmer la suppression agrement
    If MsgBox("ATTENTION ! CETTE OPERATION EST IRREVERSIBLE. Confirmez-vous la suppression de ce numéro d'agrément ?", vbQuestion + vbYesNo, "Renseignements") = vbYes Then
      i = LBnoagrement.ListIndex + 3
      Set WS = ThisWorkbook.Worksheets("Feuil1")
      MsgBox i
        With WS
          .Range("B" & Me.LBnoagrement.ListIndex + 3 & ":G" & Me.LBnoagrement.ListIndex + 3).Delete shift:=xlUp
        End With
      Set WS = ThisWorkbook.Worksheets("Feuil3")
        With WS
          .Range("B" & Me.LBnoagrement.ListIndex + 3 & ":G" & Me.LBnoagrement.ListIndex + 3).Delete shift:=xlUp
        End With
    End If
    Call Effacer
    Call Tri_agrements
    Call Affiche_agrements
End Sub

merci

RAPHAEL
 

Pièces jointes

  • Copie (1).xlsm
    125.3 KB · Affichages: 61
  • Copie (1).xlsm
    125.3 KB · Affichages: 61
  • Copie (1).xlsm
    125.3 KB · Affichages: 64

ChTi160

XLDnaute Barbatruc
Re : message d'erreur sur macro USERFORM lors de la suppression d'une donnée

Bonsoir letroubadour
Bonsoir le fil
Bonsoir le forum

pour répondre à ton problème de Ligne qui disparaissent...
cela est normal , puisse que la macro n’efface pas les lignes , mais les supprime .
Donc il faut remplacer par exemple cette ligne.
.Range("B" & Me.LBnoagrement.ListIndex + 3 & ":G" & Me.LBnoagrement.ListIndex + 3).Delete shift:=xlUp
par celle ci.
.Range("B" & Me.LBnoagrement.ListIndex + 3 & ":G" & Me.LBnoagrement.ListIndex + 3).ClearContents

je n'ai pas compris ceci.

ça semble fonctionner, il a juste fallut que je ne protège pas la les feuilles à la fin de la macro car ça se fait lorsque je quitte le formulaire.
je pense que normalement tu n'as pas à reprotéger lorsque tu quittes le Userform il faut veiller a reprotéger après toute action
Comme ceux ci.
Code:
rivate Sub Tri_agrements()
  ' Tri les numeros agrements
    Application.ScreenUpdating = False
    With ThisWorkbook.Worksheets("Feuil1")
      .Unprotect "281" 'j'ote la protection
        xlgn = .Range("B" & .Rows.Count).End(xlUp).Row
        Set rng = .Range("B3:G" & xlgn)
        rng.Sort Key1:=.Range("B3"), Order1:=xlAscending
      .Protect "281" 'je remets la protection
    End With
    With ThisWorkbook.Worksheets("Feuil3")
      .Unprotect "281" 'j'ote la protection
        xlgn = .Range("B" & .Rows.Count).End(xlUp).Row
        Set rng = .Range("B3:G" & xlgn)
        rng.Sort Key1:=.Range("B3"), Order1:=xlAscending
      .Protect "281" 'je remets la protection
    End With
    Application.ScreenUpdating = True
End Sub
mais si tu y tiens il faut mettre cela je pense
Code:
Private Sub Cmdquitter_Click()
 ActiveSheet.Protect "281" 'je protège
  Unload Me 'je ferme
End Sub
Bonne fin de Soirée
Amicalement
Jean marie
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 709
Messages
2 081 769
Membres
101 816
dernier inscrit
Jfrcs