Macro vba concatener sans liaisons avec fichiers

Anna_2013

XLDnaute Junior
Bonjour,

J''ai créé une macro qui combine sur un seul fichier excel l'ensemble des onglets d 'autres fichiers excel.

Cependant lorsque j'effectue la macro elle crèe des liaisons avec les autres classeurs ce que je ne souhaite pas.

Pourriez vous svp m'aider à lui indiquer comment ne pas créer de liaisons?

Merci par avance,

Anna
 

job75

XLDnaute Barbatruc
Re : Macro vba concatener sans liaisons avec fichiers

Bonjour Anna_2013,

Je n'ai pas suivi vos autres fils, mais je suppose que les cellules que vous copiez contiennent des formules de liaison :

Code:
Wl.Cells(l, 1).Resize(nbl, c).Copy Wf.Cells(ligne, 1)
Alors ne copiez que les valeurs :

Code:
Wf.Cells(ligne, 1).Resize(nbl, c) = Wl.Cells(l, 1).Resize(nbl, c).Value
Mais si vous voulez copier aussi les formats vous pouvez mettre les 2 lignes :

Code:
Wl.Cells(l, 1).Resize(nbl, c).Copy Wf.Cells(ligne, 1)
Wf.Cells(ligne, 1).Resize(nbl, c) = Wl.Cells(l, 1).Resize(nbl, c).Value
A+
 

Anna_2013

XLDnaute Junior
Re : Macro vba concatener sans liaisons avec fichiers

J'ai essayé de l'insérer dans cette macro mais j'ai une erreur sur Wl.Cells(l, 1).Resize(nbl, c).Copy Wf.Cells(ligne, 1)
Wf.Cells(ligne, 1).Resize(nbl, c) = Wl.Cells(l, 1).Resize(nbl, c).Value

Sub CombineFiles()
Dim FileName As String
Dim Wkb As Workbook
Dim WS As Worksheet
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
ChDrive ThisWorkbook.path: ChDir ThisWorkbook.path
FileName = Dir("*.xlsx", vbNormal)
Do Until FileName = ""
If FileName <> ThisWorkbook.Name Then
Set Wkb = Workbooks.Open(FileName:=FileName)
For Each WS In Wkb.Worksheets
If UCase(WS.Name) Like "NOTE*" Then
If WS.UsedRange.Address <> "$A$1" Or Not IsEmpty(WS.[A1].Value) Then
WS.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count): End If: End If: Next WS
Wkb.Close False: End If
FileName = Dir(): Loop
[B]Wl.Cells(l, 1).Resize(nbl, c).Copy Wf.Cells(ligne, 1)
Wf.Cells(ligne, 1).Resize(nbl, c) = Wl.Cells(l, 1).Resize(nbl, c).Value
[/B]
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
End Sub
 

job75

XLDnaute Barbatruc
Re : Macro vba concatener sans liaisons avec fichiers

Re,

Anna est une petite cachotière (c'est un euphémisme) :rolleyes:

Pour les petits curieux qui veulent savoir où sont les formules de liaison dans son fichier, exécutez :

Code:
Sub On_trouve_quand_même()
Dim w As Worksheet, c As Range
For Each w In Workbooks("Macro pour Forum.xlsm").Worksheets
  w.Visible = True
  For Each c In w.UsedRange
    If c.Formula Like "=*7.5 JV*" Then
      MsgBox c.Address(External:=True) & vbLf & vbLf & c.Formula
    End If
  Next
Next
End Sub
A+
 

Anna_2013

XLDnaute Junior
Re : Macro vba concatener sans liaisons avec fichiers

Justement je souhaite supprimer les liaisons du classeur :

Je ne parviens pas à intégrer dans ma macro les 2 syntaxes que vous m'avez communiquées.

Wl.Cells(l, 1).Resize(nbl, c).Copy Wf.Cells(ligne, 1)
Wf.Cells(ligne, 1).Resize(nbl, c) = Wl.Cells(l, 1).Resize(nbl, c).Value

Merci par avance pour votre aide,

Anna
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Macro vba concatener sans liaisons avec fichiers

Re,

J'ai essayé de l'insérer dans cette macro mais j'ai une erreur sur Wl.Cells(l, 1).Resize(nbl, c).Copy Wf.Cells(ligne, 1)
Wf.Cells(ligne, 1).Resize(nbl, c) = Wl.Cells(l, 1).Resize(nbl, c).Value

Bah j'avais seulement regardé le code de votre macro Workbook_Open (dans Module1...).

Alors pour votre macro CombineFiles c'est pareil, remplacez :

Code:
WS.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
par :

Code:
WS.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).UsedRange = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).UsedRange.Value
Et n'oubliez pas les : End If: End If: Next WS que vous avez collé à la suite...

A+
 

Anna_2013

XLDnaute Junior
Re : Macro vba concatener sans liaisons avec fichiers

Le problème est quand j'ai inserré cette synthaxe elle bug sur un de mes fichiers et l'ouvre et donc s'arrête de fonctionner

WS.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).UsedRange = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).UsedRange.Value
 

Anna_2013

XLDnaute Junior
Re : Macro vba concatener sans liaisons avec fichiers

Non cela ne buggait pas avant j'ai trouvé une autre macro pour supprimer les liaisons
Option Explicit
Sub BreakLinks()
Dim astrLinks As Variant
Dim iCtr As Long
astrLinks = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
If IsArray(astrLinks) Then
For iCtr = LBound(astrLinks) To UBound(astrLinks)
ActiveWorkbook.BreakLink Name:=astrLinks(iCtr), _
Type:=xlLinkTypeExcelLinks
Next iCtr
End If
End Sub
 

Anna_2013

XLDnaute Junior
Re : Macro vba concatener sans liaisons avec fichiers

Je n'arrive pas à sélectionner le module 1 workbook_open. Je ne parviens pas à visualiser ce code et à insérer la syntaxe
Wl.Cells(l, 1).Resize(nbl, c).Copy Wf.Cells(ligne, 1)
Wf.Cells(ligne, 1).Resize(nbl, c) = Wl.Cells(l, 1).Resize(nbl, c).Value

dans ce module.

Merci pour votre aide
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 501
dernier inscrit
talebafia