VBA_Balayage onglet_externe et copie de données

vidou

XLDnaute Junior
Bonjour,

J'ai 3 fichiers excel, 2 fichier source et 1 fichier destination

Les 3 ficiers ont la meme structure ( onglet 1 a 53 )

Le fichier destination est juste le reflet des 2 fichiers sources

Ex : en A1 de destination, on retrouve la valeur de A1 du premier fichier source ce qui donne en A1

= [.........xls]01'Q13

Mon petit souci c'est que j'utilise la fonction remplacer pour remplacer sur chaque onglet 01' par 02', 03'..... mais cela prend un temps assez long ( 720 references par onglets )

Je voudrais donc savoir si il n'existe pas un moyen plus rapide que le rechercher/remplacer.

A noter que j'ai tenté indirect mais je voudrais que le fichier destination se mette a jour sans avoir à ouvrir les fichiers source

PS : la formule exacte est : =si([.........xls]01'Q13="";"";[.........xls]01'Q13)

Merci pour votre aide !
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Lien vers un fichier externe

Bonjour vidou,

Mon petit souci c'est que j'utilise la fonction remplacer pour remplacer sur chaque onglet 01' par 02', 03'..... mais cela prend un temps assez long

Ce que vous faites manuellement vous pouvez l'automatiser avec un code de de ce genre :

Code:
Dim w As Worksheet
For Each w In Worksheets
  If w.Name Like "##" Then w.Cells.Replace "]01'!", "]" & w.Name & "'!", xlPart
Next
A+
 

job75

XLDnaute Barbatruc
Re : Lien vers un fichier externe

Re,

Si toutes les feuilles du fichier destination sont identiques vous pouvez les créer par copie de la feuille "01" :

Code:
Sub CréerFeuilles()
Dim w As Worksheet, i%
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'---suppression des feuilles existantes---
For Each w In Worksheets
  If w.Name <> "01" And w.Name Like "##" Then w.Delete
Next
'---création des feuilles---
For i = 53 To 2 Step -1
  Sheets("01").Copy After:=Sheets("01")
  With ActiveSheet
    .Name = Format(i, "00")
    .Cells.Replace "]01'!", "]" & .Name & "'!", xlPart
  End With
Next
Sheets("01").Activate
End Sub
A+
 

vidou

XLDnaute Junior
Re : Lien vers un fichier externe

Bonjour,

J'ai repris depuis l'ecriture VBA pour me faciliter la tache !

Il y a 2 fichiers sources ( A et B ) et un fichier destination ( C )

Dans le fichier destination, je souhaiterai balayer les onglets 1 a 53 et copie les données pour les décharger dans le fichier destination et dans l'onglet correspondant ( ex onglet 1 du fichier A et B dans l'onglet 1 du fichier C )

Pour commencer, je partirai à partir de ce code dans lequel je souhaite intégrer le balayage des onglets d'un fichier différent

Comme j'aime bien comprendre ce que je fais, si vous pourriez m'aider pour cette partie de code ( balayage ) en y indiquant ce que le code effectue ( sinon je ferai du pas à pas )

Merci d'avance

et bonne journée

David

HTML:
Sub Extraction_commande()


Dim tabCom(10000, 15) As Variant
Dim y As Integer

' supprimer les données de 2KE_SDS

Worksheets("2KE_SDS").Select

Call supp_extraction



Worksheets("COM").Select
Range("A2571").Select

'Copie des données dans le tableau virtuel commande
While ActiveCell.Value <> ""

    If ActiveCell.Offset(0, 0).Value = "COM" Then
       
       y = y + 1
        tabCom(y, 1) = ActiveCell.Offset(0, 13).Value
        tabCom(y, 2) = ActiveCell.Offset(0, 3).Value
        tabCom(y, 3) = ActiveCell.Offset(0, 12).Value
        tabCom(y, 4) = ActiveCell.Offset(0, 4).Value
        tabCom(y, 5) = ActiveCell.Offset(0, 14).Value
        tabCom(y, 6) = ActiveCell.Offset(0, 1).Value
        tabCom(y, 7) = ActiveCell.Offset(0, 18).Value
        tabCom(y, 8) = ActiveCell.Offset(0, 11).Value
        tabCom(y, 9) = ActiveCell.Offset(0, 15).Value
        tabCom(y, 10) = ActiveCell.Offset(0, 6).Value
     
    End If
    
ActiveCell.Offset(1, 0).Select

Wend

Worksheets("2KE_SDS").Select
Range("A2").Select

For i = 1 To y

    ActiveCell.Offset(0, 2).Value = tabCom(i, 1)
    ActiveCell.Offset(0, 5).Value = tabCom(i, 2)
    ActiveCell.Offset(0, 6).Value = tabCom(i, 3)
    ActiveCell.Offset(0, 7).Value = tabCom(i, 4)
    ActiveCell.Offset(0, 8).Value = tabCom(i, 5)
    ActiveCell.Offset(0, 9).Value = tabCom(i, 6)
    ActiveCell.Offset(0, 10).Value = tabCom(i, 7)
    ActiveCell.Offset(0, 14).Value = tabCom(i, 8)
    ActiveCell.Offset(0, 19).Value = tabCom(i, 9)
    ActiveCell.Offset(0, 20).Value = tabCom(i, 10)
    
    ActiveCell.Offset(1, 0).Select
    
    
Next i

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 391
Messages
2 087 954
Membres
103 686
dernier inscrit
maykrem