macro dans userform pour copier une ligne de UF vers un autre classeur ouvert

chatroc

XLDnaute Junior
Bonjour à tous
J'avais réalisé avec l'aide de ce forum, une application sous Excell 2000 pour gérer une bibliothèque cantonale (avec des bénévoles)
Mais le nombre de livres ayant augmenté de façon considérable, ce qui ralentit beaucoup le fonctionnement (à chaque changement d'action : enregistrer un prêt , ou un retour ou consulter les données etc..))il y a une sauvegarde automatique qui devient trop longue à réaliser
J'ai donc eu l'idée de séparer les base de données (j'avais les données sur plusieurs feuilles dans le même classeur )
J'ai donc gardé sur mon classeur maitre toutes les macros et les UF qui composent l'application
et j'ai créé d'autres classeurs :
GdA.xls
GdP.xls
Archives.xls
Ces classeurs s'ouvrent en même temps que le classeur maitre et je suis arrivé à faire fonctionner la plupart des Macros et des UF
J'ai seulement 2 soucis de copier coller
Dans mon UF qui gère les rendus, j'arrive bien à effacer la ligne concernant le livre rendu, mais je n'arrive pas à le copier dans les archives (9a marchait quand c'était sur les feuilles d'un même classeur
Voici le code qui me pose soucis:

Private Sub CmB4_Click() 'enregistrer un rendu
Dim L As Integer
Dim I As Integer
Dim c As Range
Dim lig As Integer
Dim Dt As Range
'Windows("Archives.xls").Activate
' Set Dt = Sheets("Archives").Range("b65536").End(xlUp).Offset(1, 0)
If ListBox1.ListIndex = -1 Then Exit Sub
Windows("GdP.xls").Activate
lig = 8
For Each c In Sheets("GdP").Range("H9:H" & Range("H65536").End(xlUp).Row)
lig = lig + 1
If c.Value = ListBox1.List(ListBox1.ListIndex, 2) Then Exit For
Next
On Error Resume Next
'Windows("Archives.xls").Activate
Set Dt = Windows("Archives.xls").Sheets("Archives").Range("b65536").End(xlUp).Offset(1, 0)

Windows("GdP").Activate
Range(Cells(lig, 6), Cells(lig, 12)).Copy Destination:=Dt

Sheets("GdP").Rows(lig).Delete ' pour supprimer la ligne

Windows("Archives.xls").Activate
With Worksheets("Archives")
Set Dt = Sheets("Archives").Range("b65536").End(xlUp).Offset(1, 0)
Sheets("Archives").Range("b65536").End(xlUp).Offset(0, 5) = Date
Sheets("Archives").Columns("F:G").NumberFormat = "d/m/yy"
End With
UserForm3.ListBox1.List(ListBox1.ListIndex, 1) = ""
ListBox1.List(ListBox1.ListIndex, 2) = ""
ListBox1.List(ListBox1.ListIndex, 3) = ""
ListBox1.List(ListBox1.ListIndex, 4) = ""
End Sub

"GdP" est le classeur ou j’efface la ligne (ça marche)
"Archives" et le classeur ou je veux copier la ligne (ça ne marche pas)
J'ai un problème similaire pour copier une liste sélectionné dans l'UF vers une feuille "tampon" située sur le classeur maitre
Merci à ceux qui pourraient m'aider, ça permettrait de gagner beaucoup de temps aux bénévoles
Merci
P.S.: j'ai bien parcouru les discussion qui traitent d'un sujet similaire, mais je n'ai pas trouvé la bonne !
 

chatroc

XLDnaute Junior
Re : macro dans userform pour copier une ligne de UF vers un autre classeur ouvert

Bonjour
Merci de cette première réponse très rapide
Je joins une partie du classeur maitre(j'ai supprimé les UF qui étaient à peu près au point)
J'ai neutralisé les sauvegarde (hors les "ActiveWorkbook.Save")
J'ai neutralisé également l'ouverture automatique des classeurs ( l'emplacement ne correspondrait pas )

Donc je n'arrive pas à copier la ligne de la listbox dans la feuille d'archives

Et avec "imprime" je n'arrive pas à imprimer la ligne de titres
Et la copie ne se fait pas sur la colonne A, Pourquoi ?(je l'ai réduite pour pouvoir utiliser tel que
 

Pièces jointes

  • GEST_bibliotheque-modif.zip
    90.8 KB · Affichages: 64
  • Archives.xls
    17 KB · Affichages: 88
  • GdP.xls
    38.5 KB · Affichages: 83
  • Archives.xls
    17 KB · Affichages: 83
  • GdP.xls
    38.5 KB · Affichages: 78
  • Archives.xls
    17 KB · Affichages: 82
  • GdP.xls
    38.5 KB · Affichages: 77
Dernière édition:

néné06

XLDnaute Accro
Re : macro dans userform pour copier une ligne de UF vers un autre classeur ouvert

Bonjour chatroc

Je ne peux ouvrir tes fichiers sur mon ordi.
Des pièce sont absentes,mais à première vu,tu devrais essayer ainsi.

Ôter le On Error Resume Next dans le module "Private Sub CmB4_Click() 'enregistrer un rendu"
Placer un point d'arrêt au début de ce module et regarder si il y a un plantage, ou si une instruction est mal exécutée.


L'instruction "On Error Resume Next" IGNORE les erreurs et passe à la ligne suivante.


A+
 

chatroc

XLDnaute Junior
Re : macro dans userform pour copier une ligne de UF vers un autre classeur ouvert

Bonjour Néné06
Bonjour à tous
Il semble qu'il y ai un problème avec mon dossier zip (je n'ai pas compris pourquoi )
Je vais donc essayer de l'envoyer non compressé
Quelques précisions: il faut ouvrir manuellement
"GdP.Xls"
"Archives.xls"
Eventuellement "GdA.Xls" ne sert que pour gérer les Auteurs et enregistrer des prêts et les UF 1 et 2 fonctionnent correctement
et le classeur maitre : "Gest_Biblioth.xls"
en effet l'ouverture automatique des classeurs secondaires et les enregistrements de sauvegarde sont désactivés

Les UF qui posent problème sont
UF3 "Valider le retour" qui n'enregistre pas le livre rendu dans les archives ( il n'y avait pas de problèmes quand la feuille "Archives était Dans le même classeur que la macro )
UF4 "consulter les archives" "imprimer " impossible de conserver ou de copier les titres des colonnes dans la Feuille "Tampon"
(et de copier dans la colonne A, mais ça n'est pas trop gênant, on réduit la colonne A à largeur=1)

Question subsidiaire : ou faut il placer la macro pour enregistrer les sauvegardes et fermer les classeurs secondaires

J'ai essayé de supprimer ""On Error Resume Next", mais il y a plantage et d'ailleurs ça marchait avec quand "Archives" était dans le même classeur

Merci de votre aide
 

Pièces jointes

  • GdP.xls
    36 KB · Affichages: 59
  • Archives.xls
    17 KB · Affichages: 71
  • GdP.xls
    36 KB · Affichages: 68
  • GdA.zip
    158.9 KB · Affichages: 50
  • Archives.xls
    17 KB · Affichages: 72
  • GdP.xls
    36 KB · Affichages: 62
  • GEST_biblioth.xls
    222 KB · Affichages: 117
  • Archives.xls
    17 KB · Affichages: 70

chatroc

XLDnaute Junior
Re : macro dans userform pour copier une ligne de UF vers un autre classeur ouvert

Bonjour
N'ayant pas eu de réponses satisfaisantes, j'ai galéré plusieurs jours pour arriver, enfin à résoudre mon problème (je ne suis pas un pro du VBA )
en fait il faut appeler les différents classeurs utilisés plusieurs fois dans la même macro
Comme je pense que mon problème peut se poser à d'autres, voici la macro de commande d'enregistrement et d’effacement corrigée :

Private Sub CmB4_Click() 'enregistrer un rendu :
'enregistrer la ligne dans "Archives" et éffacer la ligne dans "GdP"

Dim L As Integer
Dim I As Integer
Dim c As Range
Dim lig As Integer
Dim Dt As Range

Windows("Archives.xls").Activate
Set Dt = Sheets("Archives").Range("b65536").End(xlUp).Offset(1, 0)

If ListBox1.ListIndex = -1 Then Exit Sub
Windows("GdP.xls").Activate
lig = 8
For Each c In Sheets("GdP").Range("H9:H" & Range("H65536").End(xlUp).Row)
lig = lig + 1
If c.Value = ListBox1.List(ListBox1.ListIndex, 2) Then Exit For
Next
On Error Resume Next

Range(Cells(lig, 6), Cells(lig, 12)).Copy Destination:=Dt
Sheets("GdP").Rows(lig).Delete ' pour supprimer la ligne

Windows("Archives.xls").Activate
With Worksheets("Archives")
Sheets("Archives").Range("b65536").End(xlUp).Offset(0, 5) = Date
Sheets("Archives").Columns("F:G").NumberFormat = "d/m/yy"
End With
UserForm3.ListBox1.List(ListBox1.ListIndex, 1) = ""
ListBox1.List(ListBox1.ListIndex, 2) = ""
ListBox1.List(ListBox1.ListIndex, 3) = ""
ListBox1.List(ListBox1.ListIndex, 4) = ""
End Sub

A+
 
Dernière édition:

Statistiques des forums

Discussions
290 834
Messages
1 910 793
Membres
176 870
dernier inscrit
oguruma
Haut Bas