Travail entre 2 classeurs

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
J'ai bien vu pas mal d'exemples ( même de ici en 2011) pour jongler entre 2 classeurs
mais pas ce que je cherche
Mon fichier 1 a un USF donc rempli de données , je clique sur OK et je dois aller ajouter ces données à la suite de la dernière ligne déjà remplie !!!!
Tout le début fonctionne sauf la 1ére ligne qui bloque déjà ???? la variable "chemin" est bonne :

Code:
Private Sub OK1_Click()
 
 prem_L = Workbooks(chemin).Sheets("data").Range("B19").End(xlDown).Row
 If prem_L = 20 Then
 prem_L = prem_L + 2
 Else: prem_L = prem_L + 1
 End If
 Worksheets("data").Cells(prem_L, 2).Value = Forfait.Value
Worksheets("data").Range("B" & prem_L).Select
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlTop
        .WrapText = True
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
Suiv.SetFocus

End Sub

Ici , le code INITIALIZE de l'USF du fichier de départ pour ouvrir le fichier à compléter

Code:
MsgBox " Selectionnez votre fichier Data"
With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "Doocument word", "*.xlsx", 1
        .InitialFileName = Left(Cells(4, 5).Value, 11)
        If .Show = 0 Then
erreurouverture:
            CreateObject("Wscript.shell").Popup "Pas de fichier sélectionné", 2, "Fin de compilation", vbExclamation + vbOKOnly
            GoTo fin2
        Else
            chemin = .SelectedItems(1)
        End If
    End With
 Workbooks.Open (chemin)

Donc voilà j'aimerai aller jusque "End Sub" de la SUB OK1.... sans problème si possible ?
Merci Bcp
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : Travail entre 2 classeurs

Re
Personne n'a d'idée ?
je me rappelle plus ?

Workbook. activate ? ou workbook(filename).activate ? select ? .... ETC !!!
Tout ce que je suis sûr c'est que VBA doit avoir la "main" sur l'actif
le Pb c'est que même en "DEBUG" on voit pas son erreur .... Y faut savoir faire
Bonne soirée
 

Paf

XLDnaute Barbatruc
Re : Travail entre 2 classeurs

Bonjour

la variable "chemin" est bonne :

Que contient elle ?

Dans prem_L=Workbooks(chemin).Sheets("data").Range("B19").End(xlDown).Row
la variable du fichier Excel (déjà ouvert) ne doit contenir que le nom du Classeur ( et pas chemin + nom)

Un extrait du classeur serait le bien venu pour tester.

A+
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : Travail entre 2 classeurs

Bonjour tous , Paf
On m'avait résolu le 1er Hic !!! récupérer le nom du 2eme fichier que j'ouvrais puis éviter qu'il s'incrémente !!! Eh oui , si c'était test1.xls, ouvert il devenait test12.xls , si test2.xls alors test23.xls personne n'a pigé et on a changé de méthode , maintenant Pb un peu plus loin
Je joins les 2 derniers fichiers ou là ca doit bloquer au debut Sub OK1
et je dois encore continuer après OK , je rentre une nouvelle donnée ( efface les boites et recommence) jusque EXIT
Merci bien
.
 

Pièces jointes

  • Taches.xlsm
    39 KB · Affichages: 32
  • test2.xlsx
    16.1 KB · Affichages: 27
  • Taches.xlsm
    39 KB · Affichages: 39
  • test2.xlsx
    16.1 KB · Affichages: 25
  • Taches.xlsm
    39 KB · Affichages: 39
  • test2.xlsx
    16.1 KB · Affichages: 26

herve62

XLDnaute Barbatruc
Supporter XLD
Re : Travail entre 2 classeurs

je continue à chercher
j'ai ajouter cela à la fin de l'INITIALIZE

Code:
Nom_fic = Mid(chemin, Len(chemin) - InStr(StrReverse(chemin), "\") + 2, 15)
fin2:

puis mis Nom_fic dans la SUb OK1 ... ca change rien !!! ???
j'ai bien Workbooks (test2.xlsx).activate donc c'est bien le nom duc classeur ouvert ? mais Y veut rien savoir ???
 

Paf

XLDnaute Barbatruc
Re : Travail entre 2 classeurs

Re

Beaucoup d'explications sur des problèmes qui n'existent plus, mais pas de réponses à la question posée ! Mais le fichier est là !!

Le soucis provient bien de la variable (chemin) qui contient le chemin et le nom de fichier.

Une solution possible est de modifier le code ( celui du classeur joint !, qui est différent du code fourni au premier post) comme proposé:

I) Dans Private Sub UserForm_Initialize()

remplacer Workbooks.Open (chemin) par Set WBdevis = Workbooks.Open(chemin) et déclarer WBdevis as WorkBook en tête de la feuille de code de l'USF

II) Dans Private Sub OK1_Click()

remplacer Workbooks(chemin).Activate par WBdevis.Activate

III) Dans Private Sub Sortie_Click()
remplacer Workbooks(chemin).Close savechanges:=True par WBdevis.Close savechanges:=True

en principe ça devrait fonctionner

A+
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : Travail entre 2 classeurs

Re
Je viens de tout REmplacer , et j'en suis revenu à avant hier :
Sub auto_open()
With ThisWorkbook
Worksheets("start").Select >>>>>>>>>>>> ERREUR

C'est quand même bizarre j'ai une appli de 2 ans qui rempli des infos dans d'autres classeurs : OK , + mon appli perso de factures ou je fais pareil ( mais en xls 2003) , USF > je rempli ma facture > puis je stocke mes données ligne à ligne dans un autre fichier TOut est Nickel avec des instructions simples
Là , Nouveau fichier .... etc et ca va pas ??
Paf : tu as mes fichiers .... alors TESTE ??? moi c'est ce que je fait quand j'arrive à aider !!!! je renvoie le fichier qui fonctionne
Bonne soirée
 

Paf

XLDnaute Barbatruc
Re : Travail entre 2 classeurs

Re

Paf : tu as mes fichiers .... alors TESTE ???

je n'y avais pas pensé !!!


Trêve de plaisanterie, mes tests m'ont conduit au pb de la variable "chemin" et les corrections ont bien sûr été testées, mais avec XL 2003.

Le nouveau soucis semble provenir d'une erreur dans l'USF.

Pouvez vous re joindre le fichier Taches.xlsm‎ modifié

A+
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : Travail entre 2 classeurs

Bonjour
J'ai modifié pour tester en 2003 ca marche
Je suis revenu en 2007 ca marche aussi ????
Mais depuis avant hier je pense que j'avais une "bébête" perturbatrice non vue par mon AV ( pourtant un truc Pro??) car ensuite hier je n'avais plus le WIFI j'ai meme acheté pour rien une nouvelle Clé USB adap. car le cable fonctionnait !!! mais non ! en fait c'était la carte réseau pour cette clé qui n'était plus reconnue donc plus connecté ; Un gros Scan > 1 fichier infecté detecté et tout revenu Ok ( ca m'a pris presque 1 jour !!! mais bon)
Donc ce matin le VBA re fonctionnne ..... Etait ce lié ?? Mystère
Merci encore , là j'ai pratiquement terminé
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : Travail entre 2 classeurs

Forcément que je pouvais pas finir sans un hic !!
Je suis méticuleux , et donc pour parfaire j'ai ajouté dans le message de tout début MSGbox ( sub initialize) un CANCEL suivi , si vrai, de : APPLICATION.QUIT
Ca marche en DEbug pas à pas ...... mais pas en normal ???? j'ai l'explorateur qui s'ouvre quand même
 

Discussions similaires

Statistiques des forums

Discussions
312 323
Messages
2 087 297
Membres
103 511
dernier inscrit
mickael.das