Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA_Balayage onglet_externe et copie de données

  • Initiateur de la discussion Initiateur de la discussion vidou
  • 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 !

V

vidou

Guest
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 modification par un modérateur:
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+
 
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+
 
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
 
- 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

S
Réponses
13
Affichages
2 K
sanae_J
S
M
Réponses
1
Affichages
1 K
K
Réponses
4
Affichages
1 K
K
L
Réponses
10
Affichages
2 K
L
Réponses
9
Affichages
1 K
P
Réponses
0
Affichages
1 K
Ptinotsgnik
P
P
Réponses
16
Affichages
3 K
P
Réponses
6
Affichages
2 K
Pat13127
P
M
Réponses
6
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…