Nicolas DC
XLDnaute Nouveau
Bonjour à tous,
J'ai un soucis avec mon bout de code ci-dessous. Excel copie bien mon premier tableau (tableau_fixe) mais il ne semble pas vouloir copier mon second tableau (tableau_variable).
Si l'un d'entre vous sait m'éclairer sur mon/mes erreur(s), cela serait fort urbain de votre part ;-)
Pour infos, tableau_fixe comprendra toujours les colonnes "A:E", par contre tableau_variable comme son nom l'indique peut varier de colonnes (mais sera toujours composé de 3 colonnes consécutives).
Sub ()
'---On crée le lien vers le fichier dans lequel on va aller chercher les infos.
Dim dossier, fichier_cherche, feuille_cherche, nom_cherche As String, resultat As String
dossier = f2.Cells(3, 7) & "\"
fichier_cherche = f2.Cells(5, 7)
feuille_cherche = f2.Cells(7, 7)
nom_cherche = ActiveSheet.Cells(1, 6)
'---Cette MsgBox me sert pour l'instant à vérifier si on va bien chercher les infos dans le bon fichier
resultat = nom_cherche & " se trouve dans la feuille : " & feuille_cherche & ", du fichier : " & fichier_cherche & ", dans le dossier : " & dossier
MsgBox resultat
Application.AskToUpdateLinks = False 'permet d'empêcher la demande de mise à jour (MàJ) et à priori effectue tout de même la MàJ.
Application.DisplayAlerts = False 'permet d'empêcher l'alerte signalant qu'Excel n'a pas su mettre tous les liens à jour.
'---Ouverture du fichier dans lequel on va aller chercher les infos.
Workbooks.Open Filename:=dossier & fichier_cherche
Application.DisplayAlerts = True 'réactive les messages d'alerte.
Application.AskToUpdateLinks = True 'réactive la demande de MàJ.
With Sheets(feuille_cherche)
'---On va chercher les différentes colonnes consécutives nécessaires
colonne_nom = Rows("1:1").Find(What:=nom_cherche, SearchDirection:=xlNext, SearchOrder:=xlByColumns).Column
colonne_initiale = colonne_nom
colonne_version = colonne_nom + 1
colonne_encours = colonne_nom + 2
Dim tableau_fixe, tableau_variable, Derling As Integer
'---Mémorisation des deux tableaux
Derlig = .Columns("A").Find(What:="*", SearchDirection:=xlPrevious).Row
tableau_fixe = .Range("A4:E" & Derlig)
tableau_variable = .Range(Cells(4, colonne_initiale), Cells(Derlig, colonne_encours))
End With
'---On ferme le fichier, pas besoin de l'enregistrer vu qu'il n'y a pas eu de modif
ActiveWorkbook.Close SaveChanges:=False
'---On va ouvrir le fichier temporaire
fichier_temporaire = "temp.xlsx"
Workbooks.Open Filename:=dossier & fichier_temporaire
'---Restitution des deux tableaux
With Sheets("feuil1")
.Range("A1:E" & Derlig) = tableau_fixe
.Range("F1:H" & Derlig) = tableau_variable
End With
End Sub
J'ai un soucis avec mon bout de code ci-dessous. Excel copie bien mon premier tableau (tableau_fixe) mais il ne semble pas vouloir copier mon second tableau (tableau_variable).
Si l'un d'entre vous sait m'éclairer sur mon/mes erreur(s), cela serait fort urbain de votre part ;-)
Pour infos, tableau_fixe comprendra toujours les colonnes "A:E", par contre tableau_variable comme son nom l'indique peut varier de colonnes (mais sera toujours composé de 3 colonnes consécutives).
Sub ()
'---On crée le lien vers le fichier dans lequel on va aller chercher les infos.
Dim dossier, fichier_cherche, feuille_cherche, nom_cherche As String, resultat As String
dossier = f2.Cells(3, 7) & "\"
fichier_cherche = f2.Cells(5, 7)
feuille_cherche = f2.Cells(7, 7)
nom_cherche = ActiveSheet.Cells(1, 6)
'---Cette MsgBox me sert pour l'instant à vérifier si on va bien chercher les infos dans le bon fichier
resultat = nom_cherche & " se trouve dans la feuille : " & feuille_cherche & ", du fichier : " & fichier_cherche & ", dans le dossier : " & dossier
MsgBox resultat
Application.AskToUpdateLinks = False 'permet d'empêcher la demande de mise à jour (MàJ) et à priori effectue tout de même la MàJ.
Application.DisplayAlerts = False 'permet d'empêcher l'alerte signalant qu'Excel n'a pas su mettre tous les liens à jour.
'---Ouverture du fichier dans lequel on va aller chercher les infos.
Workbooks.Open Filename:=dossier & fichier_cherche
Application.DisplayAlerts = True 'réactive les messages d'alerte.
Application.AskToUpdateLinks = True 'réactive la demande de MàJ.
With Sheets(feuille_cherche)
'---On va chercher les différentes colonnes consécutives nécessaires
colonne_nom = Rows("1:1").Find(What:=nom_cherche, SearchDirection:=xlNext, SearchOrder:=xlByColumns).Column
colonne_initiale = colonne_nom
colonne_version = colonne_nom + 1
colonne_encours = colonne_nom + 2
Dim tableau_fixe, tableau_variable, Derling As Integer
'---Mémorisation des deux tableaux
Derlig = .Columns("A").Find(What:="*", SearchDirection:=xlPrevious).Row
tableau_fixe = .Range("A4:E" & Derlig)
tableau_variable = .Range(Cells(4, colonne_initiale), Cells(Derlig, colonne_encours))
End With
'---On ferme le fichier, pas besoin de l'enregistrer vu qu'il n'y a pas eu de modif
ActiveWorkbook.Close SaveChanges:=False
'---On va ouvrir le fichier temporaire
fichier_temporaire = "temp.xlsx"
Workbooks.Open Filename:=dossier & fichier_temporaire
'---Restitution des deux tableaux
With Sheets("feuil1")
.Range("A1:E" & Derlig) = tableau_fixe
.Range("F1:H" & Derlig) = tableau_variable
End With
End Sub