Selection onglet et Variable pour nom xls

Résolu/Fermé
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015 - 21 juil. 2014 à 15:12
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 23 juil. 2014 à 08:09
Bonjour,
Je dois automatisé un système qui prend des valeur sur une feuille , les valeurs sont toujours au même endroit et doivent aller toujours a la même place sur une feuille d'analyse.
Ayant commencer le VBA excel depuis peu je suis un peu perdu.

Cells(a, 18).Select
ActiveCell.FormulaR1C1 = "='[Nom.xls]SS2'!R29C17"

( a est une variable déjà défini dans mon code )


J'aimerai changer SS2 par sheet(1) ou un autre truc ce qui me permettrai de se baladé entre les onglet en fonction de ma boucle.

J'aimerai également savoir si c'est possible d'obtenir le lien du excel exemple E:\Dossier3\Dossier2\Nom.Xls
Et juste extraire le Nom.xls une fois que la personne a rentrer le chemin complet ( en partant du fait que sa ne sera jamais le même chemin ni le même nombre de caractère pour le nom du classeur)


Je suis désolé de ne pas pouvoir donner plus d'information mais toute mes données sont confidentiel , je vous ai donner un exemple d'utilisation , j'espère avoir donner asser d'info pour trouver une solution

Cordialement

2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
21 juil. 2014 à 15:47
Bonjour,

Voici un code qui devrait répondre à tes deux questions :

Sub test()
Dim Feuille As Variant

For Each Feuille In Array("Feuil1", "Feuil2", "Feuil3")
    Debug.Print "='[Nom.xls]" & Feuille & "'!R29C17"
Next

Dim NomFic As String
NomFic = Split("E:\Dossier3\Dossier2\Nom.Xls", "\")(UBound(Split("E:\Dossier3\Dossier2\Nom.Xls", "\")))
MsgBox NomFic
End Sub

0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
21 juil. 2014 à 16:10
Bonjour ,
Merci pour cette réponse rapide .
Je voudrai quelque information sur la boucle car le nombre de feuil n'est pas défini ( j'avoue n'avoir jamais vu de boucle for each mise a par en web avec les tableaux ) j'ai fais des boucle basique jusqu'à maintenant for et DO
J'ai exécuté le code , ça me fait toujours 1 seule ligne mais cette fois sans les valeurs , admettons la j'ai 5 feuille différente et je dois recopier 5 valeur au même endroit de ces 5 feuille différente sur un autre classeur. donc j'ai fais ceci


Sub Macro4()
Dim a As Integer
Dim Feuille As Variant

a = 43

For Each Feuille In Array("Feuil1", "Feuil2", "Feuil3")


Cells(a, 18).Select
Debug.Print "='[Nom.xls]" & Feuille & "'!R29C17"
Cells(a, 19).Select
Debug.Print "='[Nom.xls]" & Feuille & "'!R38C11"
Cells(a, 20).Select
Debug.Print "='[Nom.xls]" & Feuille & "'!R67C14"
Cells(a, 21).Select
Debug.Print "='[Nom.xls]" & Feuille & "'!R67C15"
Cells(a, 23).Select
Debug.Print "='[Nom.xls]" & Feuille & "'!R17C17"

Next
End Sub

Je n'ai pas encore mis la fonction pour définir Nom.Xls , j'utilise le vrai nom d'un classeur mais pour éviter les problème je l'ai modifier , j'automatiserai avec ton code une fois que la parti fonctionnera

En tout cas je te remercie infiniment

Cordialement
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
21 juil. 2014 à 16:15
Debug.Print
écrit ce qui le suit dans la fenêtre d'exécution...
Remplace donc par
ActiveCell.FormulaR1C1 =

Ensuite, For each n'était qu'un exemple. A toi à adapter avec ta propre boucle...
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
21 juil. 2014 à 16:24
Cela serai possible d'utiliser

For i = 1 To Sheets.Count

Cells(a, 18).Select
ActiveCell.FormulaR1C1 = "='[Nom.xls]" & Feuille & "'!R29C17"

next i

Et remplacer feuille par quelque chose qui permettrai de suivre via par exemple un sheet(i)

Je suis vrai désoler j'ai toujours fais du VBA access objet , d'un seul coup passer sur excel ça change et j'ai perdu mes petit repère
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
21 juil. 2014 à 16:29
Bien sur que oui.

Supposons que les noms de tes feuilles soient "Sheet1", "Sheet2", "Sheet3" etc... Tu peux écrire comme ceci :

For i = 1 To Sheets.Count

    Cells(a, 18).Select
    ActiveCell.FormulaR1C1 = "='[Nom.xls]Sheet" & i & "'!R29C17"

next i


*L'important dans ce code est de différencier le nom en "dur" Sheet (qui de ce fait se retrouve entre les guillemets) et la partie variable de ce nom (qui doit être sortie des guillemets).
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
21 juil. 2014 à 16:35
En faite mon gros problème c'est ça feuil1(SS2) , le feuil1 reste et le SS2 est totalement variable , du coup je voulais me balader dans les feuilles avec un sheet() qui aurai reconnu peu importe le nom de la feuille ( celle qui est entre () )
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
21 juil. 2014 à 16:41
Boudiou, on va y arriver...

Dim Feuille As String
For i = 1 To Sheets.Count
    Feuille = Sheets(i).Name
    Cells(a, 18).FormulaR1C1 = "='[Nom.xls]" & Feuille & "'!R29C17"
next i


On en a profité également pour virer la sélection de cellule inutile...
0