Collage avec liaison

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

J

Julietta

Guest
Bonjour à tous,

Je voulai savoir si il étais possible de copier et coller des cellulles avec liaison tout en pouvant modifier le nom du fichier.

Je m'explique. J'importe des cellules avec liaisons mais le problème est que tous les mois le fichier va changer de nom. Mais les cellules ne bougent pas.
Exemple : Crédits 02-2011 pour le mois de février. Et en mars j'aurais Crédits 03-2011.

Est-ce qu'il y a quelque chose qui permet cette manipulation?

Merci d'avance

Julietta
 
Re : Collage avec liaison

Bonjour Julietta,

Pour rester dans l'exemple du post précédent un code qui en février ouvre le classeur Crédits 02-2011.xls et en mars Crédits 03-2011.xls (toujours situé dans le sous répertoire nommé 'Dossier'). Je n'ai mis des commentaires qu'aux lignes nouvelles ou modifiées. Cordialement

KD

VB:
Option Explicit
Sub Recup()
Dim oWb1 As Workbook, oWb2 As Workbook, oWs1 As Worksheet, oWs2 As Worksheet
'nom du classeur à ouvrir
Dim WbNm As String
If Len(Month(Date)) = 1 Then
'si le mois actuel est < 10 (1 caractère)
    WbNm = "Crédits 0" & Month(Date) & "-" & Year(Date) & ".xls"
Else
'si le mois actuel est > 9 (2 caractères)
    WbNm = "Crédits " & Month(Date) & "-" & Year(Date) & ".xls"
End If
Set oWb1 = ThisWorkbook: Set oWs1 = oWb1.Worksheets("Exploit")
'ouverture et initialisation classeur source et feuille source
Set oWb2 = Workbooks.Open(ThisWorkbook.Path & "\Dossier\" & WbNm): Set oWs2 = oWb2.Worksheets("Source")
oWs1.Cells(10, 6) = oWs2.Cells(7, 2)
Workbooks(oWb2.Name).Close
End Sub

Edit : fonctionne pour tous les mois et toutes les années...
 
Dernière édition:
Re : Collage avec liaison

Merci beaucoup!! Vous êtes mon sauveur^^

Juste un petit problème...
Il me met une erreur à ce niveau :
Set oWb2 = Workbooks.Open(ThisWorkbook.Path & "\Dossier\" & WbNm)
J'ai bien appelé le bon fichier (AE 02-2011)
Dim oWb1 As Workbook, oWb2 As Workbook, oWs1 As Worksheet, oWs2 As Worksheet
'nom du classeur à ouvrir
Dim WbNm As String
If Len(Month(Date)) = 1 Then
'si le mois actuel est < 10 (1 caractère)
WbNm = "AE 0" & Month(Date) & "-" & Year(Date) & ".xls"
Else
'si le mois actuel est > 9 (2 caractères)
WbNm = "AE " & Month(Date) & "-" & Year(Date) & ".xls"
End If
Set oWb1 = ThisWorkbook: Set oWs1 = oWb1.Worksheets("Exploit")
'ouverture et initialisation classeur source et feuille source
Set oWb2 = Workbooks.Open(ThisWorkbook.Path & "\Dossier\" & WbNm): Set oWs2 = oWb2.Worksheets("Source")
oWs1.Cells(10, 6) = oWs2.Cells(7, 2)
Workbooks(oWb2.Name).Close
End Sub
 
Re : Collage avec liaison

Re,

Peut-être parce que nous sommes au mois de mars ? 🙂 Date fait référence à la date d'aujourd'hui (du moins si l'ordinateur est à la date actuelle). Si il s'agit d'ouvrir des classeurs nommés 02 en mars, il faudra changer de logique. Le tout est de savoir s'il y a une logique et qu'elle est elle.

Cordialement

KD
 
Re : Collage avec liaison

La logique est la suivante... Il s'agit de fichier qui tombe en début de mois mais faisant référence au mois précédent.
Exemple : le 3 mars je traîte le fichier du mois de février.
 
Re : Collage avec liaison

Bonjour,

VB:
Option Explicit
Sub Recup()
Dim oWb1 As Workbook, oWb2 As Workbook, oWs1 As Worksheet, oWs2 As Worksheet
Dim WbNm As String, m As Integer, y As Integer
Select Case Month(Date)
    Case 2 To 12
        m = Month(Date) - 1
        y = Year(Date)
    Case 1
        m = 12
        y = Year(Date) - 1
End Select
If Len(m) = 1 Then
   WbNm = "Crédits 0" & m & "-" & y & ".xls"
Else
   WbNm = "Crédits " & m & "-" & y & ".xls"
End If
Set oWb1 = ThisWorkbook: Set oWs1 = oWb1.Worksheets("Exploit")
Set oWb2 = Workbooks.Open(ThisWorkbook.Path & "\Dossier\" & WbNm): Set oWs2 = oWb2.Worksheets("Source")
oWs1.Cells(10, 6) = oWs2.Cells(7, 2)
Workbooks(oWb2.Name).Close
End Sub

KD
 
Re : Collage avec liaison

Cool!!
Un petit problème... ça me met un beug à ce niveau
Set oWb1 = Workbooks.Open(ThisWorkbook.Path & "\02-2011\" & WbNm): Set oWs1 = oWb1.Worksheets("VN1").

Merci encore!

Vous m'avez été d'un très grande aide!
 
Re : Collage avec liaison

Bonjour,

D'une part je vois que dans le dernier code je n'ai pas fait le changement "Crédit" -> "AE".
D'autre part le sous-dossier s'appelle vraiment "02-2011" ? Si c'est le cas cela veut dire que chaque mois vous avez un fichier dont le nom varie qui est placé dans un sous dossier dont le nom varie aussi ?

KD
 
Re : Collage avec liaison

J'aivais bien modifié de Crédits en AE.

En effet le nom du dossier change tous les mois. Et comme pour le nom du fichier on travaille sur le mois précédent.

J'ai essayé de mettre mon fichier receveur dans le même dossier que le source en utilisant le code suivant :
'Change automatiquement de mois
If Len(Month(Date)) = 1 Then
'si le mois actuel est < 10 (1 caractère)
WbNmAE = "AE 0" & Month(Date) - 1 & "-" & Year(Date) & ".xls"
Else
'si le mois actuel est > 9 (2 caractères)
WbNmAE = "AE " & Month(Date) - 1 & "-" & Year(Date) & ".xls"
End If

'Initialisation classeur et feuille receveur = indicteur.importation
Set oWb2 = ThisWorkbook: Set oWs10 = oWb2.Worksheets("AE")
'Ouverture et initialisation classeur source et feuille source (AE-VN1)
Set oWb1 = Workbooks.Open(ThisWorkbook.Path & "\" & WbNmAE): Set oWs1 = oWb1.Worksheets("VN1")


Ce code est le premier que vous m'avez donné. Il fonctionne.
J'ai donc essayer le dernier code, il ne fonctionne pas et me bloque au même endroit...que le fichier soit en dehors du dossier ou dedans (j'ai bien entendu modifié le code en conséquence).

Cordialement

Julietta
 
Re : Collage avec liaison

Re,

Je ne peux que confirmer que cela fonctionne de mon côté. Pouvez vous renvoyer dans un zip le fichier actuel et le fichier source (débarrassés de toutes informations confidentielles) ?

Cordialement

KD

Edit:
Si le dossier varie aussi il faut le variabiliser. Un nouvel essai testé.

VB:
Option Explicit

Sub Recup()
Dim oWb1 As Workbook, oWb2 As Workbook, oWs1 As Worksheet, oWs2 As Worksheet
Dim t As String, m As Integer, y As Integer
Select Case Month(Date)
    Case 2 To 12
        m = Month(Date) - 1
        y = Year(Date)
    Case 1
        m = 12
        y = Year(Date) - 1
End Select
If m > 9 Then
   t = m
Else
   t = "0" & m
End If
Set oWb1 = ThisWorkbook
Set oWs1 = oWb1.Worksheets("AE")
Set oWb2 = Workbooks.Open(ThisWorkbook.Path & "\" & t & "-" & y & "\" & "AE " & t & "-" & y & ".xls")
Set oWs2 = oWb2.Worksheets("VN1")
oWs1.Cells(10, 6) = oWs2.Cells(7, 2)
Workbooks(oWb2.Name).Close
End Sub
 
Dernière édition:
Re : Collage avec liaison

Bonjour,

Je tiens à vous remercier pour votre aide. Mon fichier fonctionne parfaitement...grâce à vous!
Merci encore pour votre disponnibilité et la clareté de vos explications.

Je garde ce site en favoris!

Merci
Bonne continuation
Cordialement

Julietta
 
- 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
2
Affichages
840
Sekh70
S
G
Réponses
5
Affichages
2 K
G
Réponses
1
Affichages
1 K
K
Réponses
4
Affichages
896
kangourou01
K
F
Réponses
2
Affichages
1 K
F
M
Réponses
5
Affichages
1 K
M
Z
Réponses
2
Affichages
943
F
Réponses
6
Affichages
938
fabridi
F
J
Réponses
5
Affichages
2 K
Johann60
J
Retour