Renvoyer une plage variable (fonction transpose)
Résolu
QUIZZBEE
Messages postés
2
Statut
Membre
-
QUIZZBEE Messages postés 2 Statut Membre -
QUIZZBEE Messages postés 2 Statut Membre -
Bonjour,
je souhaite renvoyer une plage nommée "ventil_contrat" de tous les fichiers d'un répertoire à l'aide de la fonction "transpose" pour créer un fichier liaisonné.
Le code fonctionne parfaitement lorsque j'écris le nom de la plage mais je ne parviens pas à le faire fonctionner lorsque j'utilise une variable au lieu du nom.
En gras : le code important. En souligné : l'endroit du problème. Voici le code :
Sub recup()
Dim chemin As String
Dim fichier As String
Dim nb_col As Byte
Dim nb_lign As Byte
Dim ma_plage As Range
Range("A4").Select 'sélectionner la cellule de début
chemin = Workbooks(ActiveWorkbook.Name).Path & "\"
fichier = Dir(chemin & "*.xlsx")
Application.ScreenUpdating = False
Do While fichier <> ""
Workbooks.Open Filename:=chemin & fichier, UpdateLinks:=0
On Error Resume Next
Set ma_plage = Range("ventil_contrat")
If ma_plage Is Nothing Then
ActiveWorkbook.Close savechanges:=False
Else
nb_col = ma_plage.Columns.Count
nb_lign = ma_plage.Rows.Count
ThisWorkbook.Activate
Range(ActiveCell, ActiveCell.Offset(nb_col - 1, nb_lign - 1)).Select
Selection.FormulaArray = "=transpose('" & chemin & fichier & "'!" & ma_plage & ")"
Windows(fichier).Activate
Application.CutCopyMode = False
ActiveWorkbook.Close savechanges:=False
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
End If
fichier = Dir ' Fichier suivant
Loop
Application.ScreenUpdating = True
End Sub
Pourtant si j'écris à l'endroit souligné : "'!ventil_contrat)" ça fonctionne.
J'ai essayé de l'écrire de plein de façon, à chaque fois il me renvoi du texte au lieu des valeurs :/
Merci par avance de vos précieux conseils ;-)))
je souhaite renvoyer une plage nommée "ventil_contrat" de tous les fichiers d'un répertoire à l'aide de la fonction "transpose" pour créer un fichier liaisonné.
Le code fonctionne parfaitement lorsque j'écris le nom de la plage mais je ne parviens pas à le faire fonctionner lorsque j'utilise une variable au lieu du nom.
En gras : le code important. En souligné : l'endroit du problème. Voici le code :
Sub recup()
Dim chemin As String
Dim fichier As String
Dim nb_col As Byte
Dim nb_lign As Byte
Dim ma_plage As Range
Range("A4").Select 'sélectionner la cellule de début
chemin = Workbooks(ActiveWorkbook.Name).Path & "\"
fichier = Dir(chemin & "*.xlsx")
Application.ScreenUpdating = False
Do While fichier <> ""
Workbooks.Open Filename:=chemin & fichier, UpdateLinks:=0
On Error Resume Next
Set ma_plage = Range("ventil_contrat")
If ma_plage Is Nothing Then
ActiveWorkbook.Close savechanges:=False
Else
nb_col = ma_plage.Columns.Count
nb_lign = ma_plage.Rows.Count
ThisWorkbook.Activate
Range(ActiveCell, ActiveCell.Offset(nb_col - 1, nb_lign - 1)).Select
Selection.FormulaArray = "=transpose('" & chemin & fichier & "'!" & ma_plage & ")"
Windows(fichier).Activate
Application.CutCopyMode = False
ActiveWorkbook.Close savechanges:=False
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
End If
fichier = Dir ' Fichier suivant
Loop
Application.ScreenUpdating = True
End Sub
Pourtant si j'écris à l'endroit souligné : "'!ventil_contrat)" ça fonctionne.
J'ai essayé de l'écrire de plein de façon, à chaque fois il me renvoi du texte au lieu des valeurs :/
Merci par avance de vos précieux conseils ;-)))
A voir également:
- Renvoyer une plage variable (fonction transpose)
- Fonction si et - Guide
- Frédéric cherche à faire le buzz sur les réseaux sociaux. il a ajouté une image d’ours polaire sur une image de plage. retrouvez l'image originale de la plage. que cache l'ours polaire ? - Forum Graphisme
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
1 réponse
Bonjour,
ce n'est pas de ma_plage.address que tu aurais besoin ?
En tenant compte du fait que sans paramètre c'est la référence colonne absolue, ligne absolue qui est retournée
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
ce n'est pas de ma_plage.address que tu aurais besoin ?
En tenant compte du fait que sans paramètre c'est la référence colonne absolue, ligne absolue qui est retournée
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
1000 merci c'est tout à fait ce qu'il me fallait ;-)
Grâce à toi je viens de finaliser ma première macro digne de ce nom ^^