référence relative dans une plage nommée en VBA

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 !

Risleure

XLDnaute Occasionnel
Bonjour le Forum

Je réalise plusieurs importations de données de plusieurs fichiers .txt par macro selon le code suivant
Code:
 With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & FichierChoisi, Destination:=Range(Position))
        	.Name = "DataImport"
	...
Comme il peut y en avoir plusieurs zones d'importation sur la même feuille (ActiveSheet) !! XL les nomme successivement "DataImport, DataImport_1, DataImport_2, ... Lors de l'importation la macro récupère le nom de la dernière importation par
Code:
TableCourante = ActiveSheet.QueryTables(1).Name
NB, il m'a fallu un moment pour comprendre que la dernière table porte l'indice le plus bas!!!
Ensuite, la macro passe par une phase de nettoyage de la dite table et c'est là que je cale.
Je souhaite par exemple décaler des lignes 14 à 26 de la 3ème colonne dans la zone renvoyée par TableCourante"
Mais le code ci dessous ne fonctionne pas
Code:
ActiveSheet.Range(TableCourante).Range(Cells(14, 3), Cells(26, 3)).Insert Shift:=xlDown

C'est une histoire de savoir faire de la référence relative dans une plage nommée mais je ne trouve pas ni dans l'aide XL ni avec des mots clefs dans ce Forum et je sens bien qu'écrire .Range(...).Range(cells(..)) n'est pas trop bon 🙁
Mais il est peut être plus simple de travailler par rapport à la cellule "Position" qui est l'adresse de la cellule en haut à droite de la table importée, ce qui ne change rien car je m'adresse toujours au Range(Cells(14, 3), Cells(26, 3) par rapport à cette cellule.

J'attends votre choix et conseils éclairés. 😀

Merci d'avance
 
Re : référence relative dans une plage nommée en VBA

Bonsoir,

Pas sur d'avoir tout compris, mais je crois que tu peux regarder du coté de Offset.
Range("A2").Offset(x,y)
ou
Cells(2,3).Offset(x,y)


x = un nombre de lignes de deplacement
y = un nombre de colonnes de deplacement
 
Re : référence relative dans une plage nommée en VBA

Bonjour le Forum, Catrice

Merci d'avoir tenté une réponse mais j'ai peut être très mal formulé ma question.
Donc en la simplifiant au maximum, je souhaite savoir comment réaliser une insertion de cellules vides dans la 3ème colonne de la ligne 14 à la ligne 26 cela dans une plage nommée (par exemple "DataImport_3" et qui peut se trouver n'importe où dans la feuille.
Sachant que le code cidessous ne fonctionne pas
Code:
ActiveSheet.Range("DataImport_3").Range(Cells(14, 3), Cells(26, 3)).Insert Shift:=xlDown
😡
 
Dernière édition:
Re : référence relative dans une plage nommée en VBA

Bonjour,

ci-joint une solution à tester :

Code:
Sub Test()
Deb = 14
Fin = 26
Col = 3
'---------------------------
ActiveSheet.Range("DataImport_3").Offset(Deb - 1, Col).Resize(Fin - Deb + 1).Insert Shift:=xlDown
End Sub
 

Pièces jointes

Dernière édition:
Re : référence relative dans une plage nommée en VBA

Re,

Merci Catrice pour cette solution qui utilise resize et offset. J'avais trouvé une solution fonctionnelle mais qui semble être fragile.

Code:
Application.Goto Reference:= "ImportData_3"
Selection.Range(Cells(14, 3), Cells(26, 3)).Insert Shift:=xlDown
...

Je regarde ta solution pour voir si elle est plus solide

Merci 😉
 
- 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

Discussions similaires

Réponses
1
Affichages
468
Réponses
5
Affichages
413
Réponses
0
Affichages
380
Retour