• Initiateur de la discussion Initiateur de la discussion Alex90
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

A

Alex90

Guest
Bonjour à tous,

J'ai un gros soucis avec mon programme vba.
Mon programme doit copier des données d'un fichier A et les coller dans un fichier B.
Le problème, c'est qu'il va bien chercher les infos du fichier A mais, au moment de les coller dans le fichier B, gros beug. Excel s'arrête de fonctionner!

Quelqu'un pourrait il me dire pourquoi?

Je vous laisse les documents en pièce jointe

Merci pour votre aide.

Alex
 

Pièces jointes

Re : Probleme vba

Bonjour Alex et bienvenu(e), bonjour le forum,

J'ai ouvert tes deux fichiers, il y a du code en pagaille ! Tu pourrais au moins préciser où (dans quel fichier, dans quel module, dans quelle procédure) se trouve la ligne qui plante, ça nous éviterait de chercher...
 
Re : Probleme vba

Bonjour Robert,

J'ai réussi à enlever le "beug" mais, maintenant j'ai un autre soucis!
Je dois ouvrir plusieurs fichiers, tous situé au même endroit, et coller les infos de ces fichiers dans 1 seul et même doc.
Cependant, le programme ouvre bien tous les fichiers mais ne colle les infos que du dernier fichier.

Voici le programme:

Code:
Private Sub Valider_Click()

Dim MaSelection As Range
Dim Wb_source As Workbook
Dim Ws_source As Worksheet
Dim ZoneColle As Range

    ' Récupération des données dans classeur fermé
    
    Workbooks("MC_essai.xlsm").Worksheets("Saisie").Cells.ClearContents

 'Premier fichier à récupérer des données

    Set Wb_source = Workbooks.Open(Filename:="\\Gpao\commun\30_QUALITE\\307_Gestion_de_service\Main_courante_atelier\MC_Plastique_test.xlsm")

'Second fichier à récupérer les données

    Set Wb_source = Workbooks.Open(Filename:="\\Gpao\commun\30_QUALITE\\307_Gestion_de_service\Main_courante_atelier\MC_Expédition.xlsm")

    Set Ws_source = Wb_source.Worksheets("Synthese")
    Ws_source.ListObjects("Tableau1").Range.AutoFilter Field:=2, Criteria1:= _
                                                       N°Semaine.Text
    Set MaSelection = Ws_source.Range(Range("A5"), Cells(Range("B65536").End(xlUp).Row, 19))
   ' MaSelection.Select
    MaSelection.SpecialCells(xlCellTypeVisible).Copy _
            Workbooks("MC_essai.xlsm").Worksheets("Saisie").Range("A5")
    Set ZoneColle = Ws_source.Range("a65536").End(xlUp).Offset(1, 0)
    Wb_source.Close False

 UserForm1.Hide
 
End Sub

Si tu peux m'éclairer sur ce point ce serai super!

Merci d'avance
 

Pièces jointes

Re : Probleme vba

Bonsoir Alex, bonsoir le forum,​

Je n'ai pas tester tes fichier mais je relève une incohérence dans ton code. tu définis deux fois la variable Wb_source :
Code :
Set Wb_source = Workbooks.Open(Filename:=\\Gpao\commun\30_QUALITE\\307_Gestion_de_service\Lyse\Main_courante_atelier\MC_Plastique.xlsm)
Set Wb_source = Workbooks.Open(Filename:="\\Gpao\commun\30_QUALITE\\307_Gestion_de_service\Lyse\Main_courante_atelier\MC_Expédition.xlsm")



Je pense que c'est la seconde ligne qui va définir cette variable, donc le fichier : MC_Expédition.xlsm.
Mais tu parles de plusieurs fichiers et ton code ne fait référence qu'à deux... Donc je ne comprend pas grand chose... En plus avec Excel 2003 je n'arrive pas à ouvrir le second ficher...
En ne me basant que sur le code (sans tester donc), voilà comment je verrais les choses :
Code :
Private Sub Valider_Click()
Dim fso As Object 'déclare la variable fso (Filse System Object)
Dim d As Object 'déclare la variable d (Dossier)
Dim fs As Object 'déclare la variable fs (FichierS)
Dim f As Object 'déclare la variable f (Ficher)
Dim cs As Workbook 'déclare la variable cs (Classeur Source)
Dim os As Object 'déclare la variable os (Onglet Source)
Dim cc As Workbook 'déclare la variable cc (Classeur Cible)
Dim oc As Object 'déclare la variable oc (Onglet Cible)
Dim ps As Range 'déclare la variable ps (Plage Source)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)


Unload Me 'vide et ferme l'UserForm
Set cc = ThisWorkbook 'définit le classeur cible
Set oc = cc.Sheets("Saisie") 'définit l'onglet cible
If N°Semaine.Text = "" Then
MsgBox "Le champs N°Semaine n'a pas été rempli. Veuillez le remplir.", vbOKOnly + vbInformation, "Champs manquants ou incorrects"
Exit Sub
End If
oc.Cells.ClearContents 'vo le contenu de l'onglet cible

Set fso = CreateObject("Scripting.FileSystemObject") 'définit la variable fso (accès aux fichiers)
'définit la variable d (dossier contenant les fichiers)
Set d = fs.GetFolder("\\Gpao\commun\30_QUALITE\\307_Gestion_de_service\Lyse\Main_courante_atelier")
Set fs = d.Files 'définit la variable fs (l'ensemble des fichiers du dossier d)
For Each f In fs 'boucle sur tous les fichiers f dans d
If Right(f.Name, 4) = "xlsm" Then 'condition : si le fichier a "xlsm" comme extension (à adapter à ton cas)
Set cs = Workbooks.Open(f) 'définit le classeur source (en l'ouvrant)
Set os = cs.Sheets("Synthese") 'définit l'onglet source
os.ListObjects("Tableau1").Range.AutoFilter Field:=2, Criteria1:=N°Semaine.Text
Set ps = os.Range("A5:B" & os.Cells(Application.Rows.Count, 2).End(xlUp).Row) 'définit la plage source
'définit la cellule de destination
Set dest = IIf(oc.Range("A5").Value = "", oc.Range("A5"), oc.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0))
'copie les cellules visibles de la plage source ps et les colle dans la cellule de destination
ps.SpecialCells(xlCellTypeVisible).Copy dest
cs.Close False 'ferme le classeur source sans sauver
End If 'fin de la condition
Next f 'prochain fichier de la boucle
End Sub



 
Re : Probleme vba

Bonjour Robert,

Merci pour ton aide mais, j'ai encore un petit soucis.
En faite, tout fonctionne comme je veux mais, quand mon fichier de récupération colle les données de mes autres fichiers, il colle aussi la 1ere ligne du tableau CAD la ligne des titres... Alors que moi je ne veux pas que cette ligne apparaisse (voir fichier "Image").

Saurai tu comment faire?

Merci, par avance, pour ton aide
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Réponses
5
Affichages
626
Réponses
3
Affichages
680
Réponses
8
Affichages
2 K
Retour