> Tous les forums > Forum Bureautique
 le nom de 2 classeurs en Excel VBASujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
claudio10
  Posté le 05/11/2010 @ 18:22 
Aller en bas de la page 
Astucien

Bonsoir

en excel VBA

J'ai 2 classeurs d'ouverts et travaille uniquement sur un , l'autre je vais rechercher des informations .

Le classeur sur lequel je travaille est activer et je peux récupérer son nom

Mais comment faire pour le 2 ème classeur qui lui n'est pas activé pour récupérer son nom

Merci

Publicité
pcastuces
 Posté le 06/11/2010 à 09:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Equipe PC Astuces
Bonjour,

Le sujet a été déplacé par la modération dans un forum plus adéquat.

Vous pouvez continuer la discussion à la suite.

A bientôt.
qmike549
 Posté le 06/11/2010 à 09:48 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Maître astucien

bonjour

une piste

NomOnglet = Sheets(2).Name

ferrand
 Posté le 06/11/2010 à 11:28 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Salut,

Je dois être mal réveillé aujourd'hui mais ta question m'échappe : si 2 classeurs sont ouverts comment ont-ils été ouverts ? Logiquement, tu ouvres le premier classeur dans lequel se trouve le code VBA, lequel lorsqu'il a besoin du second classeur l'ouvre (à condition que le chemin et le nom soient dans le code...) ? Maintenant, si pour une raison que j'ai du mal à suivre tu dois récupérer les noms des classeurs, s'il est assuré qu'il n'y en a que 2 d'ouverts, il te suffit de les lister :

Par exemple: nomwb1 = ThisWorkbook.Name [ça c'est le nom du classeur qui contient le code]

For Each wb In Application
nomwb2 = .Workbooks(wb).Name
If nomwb2 <> nomwb1 Then Exit For
Next wb

[et tu auras récupéré le nom du second]. La meilleure méthode dépend de ce que tu veux faire ensuite. Pour les utiliser, tu n'as même pas besoin du nom, tu peux affecter le classeur à une variable objet...

Dim monwbk As Workbook
If Workbooks.Count = 2 Then
For i = 1 To 2
If Not Workbooks(i).Name = ThisWorkbook.Name Then Set monwbk = Workbooks(i)
Next i

[Tu disposes alors de ThisWorkbook et monwbk pour manipuler chaque classeur]

galopin01
 Posté le 06/11/2010 à 11:48 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Oui, un peu plus d'info sur le Pourquoi/Comment du besoin aurait simplifié les choses.
Il n'est pas certain à ce stade que créer une instance à ce stade soit indispensable...

Si tu veux juste récupérer le nom, tu peux te contenter de :

Sub test()
Dim WB As String
If Workbooks.Count = 2 Then
For i = 1 To 2
If Not Workbooks(i).Name = ThisWorkbook.Name Then WB = Workbooks(i).Name
Next i
End If
MsgBox WB
End Sub

A+

claudio10
 Posté le 06/11/2010 à 14:12 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

merci à vous ,ça marche

un peu de précision ,les 2 classeurs sont ouverts à la main l'un après l'autre (c'est pas pour moi)

j'ai le classeur code qui ne se nomme pas toujours pareil et l'autre lequel je voulais qu'il soit renommer (donc pas toujours le même nom ).

avant votre intervention j'étais oblihé de nommer toujours pareil

Merci à vous , j'ai pris la solution de galopin01 ,celle de ferrand ne fonctionnait pas (erreur:compilation référence incorrecte ou non qualifiée).C'est peut-être de ma faute je suis débutant dans VBA

encore merci

@+.

ferrand
 Posté le 06/11/2010 à 14:50 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Salut,

celle de ferrand ne fonctionnait pas (erreur:compilation référence incorrecte ou non qualifiée).

Laquelle ?

Galopin (qui très souvent anticipe) t'a fourni une macro complète. Il n'y a qu'à la recopier en bloc et aucune raison pour que cela ne marche pas. Ce n'est pas mon cas (je ne le fais en général jamais tant que je ne sais pas avec certitude où l'on va), les bribes de code que j'ai glissées, il fallait les compléter pour en faire des macros qui fonctionnent. Sa macro pouvait t'y aider, elle est proche de ma première "solution" sur le fond et de la seconde sur la forme (j'ai mis solution entre guillemets car je ne prétend pas en avoir donné).

La bonne solution pour toi sera évidemment celle qui te convient le mieux à l'usage. Si l'objectif est de renommer le second classeur, je maintiens que tu n'as nul besoin de connaître son nom pour le faire.

Sub test()
If Workbooks.Count = 2 Then
For i = 1 To 2
If Not Workbooks(i).Name = ThisWorkbook.Name Then Workbooks(i).SaveAs ThisWorkbook.Path & "\NouveauNom.xls"
Next i
End If
End Sub

Cette adaptatation de la macro de Galopin enregistrera le classeur sous un nouveau nom (remplacer NouveauNom par le nom souhaité) dans le dossier contenant le premier classeur (si on veut l'enregistrer ailleurs, remplacer ThisWorkbook.Path par le chemin du dossier voulu).

claudio10
 Posté le 06/11/2010 à 16:11 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Re

excuses moi,mais comme je n'y connais pas trop ,je prends ce qui fonctionne.et je ne pouvais pas ajouter ou retirer quelque-chose .Je m'en sors avec les macros car j'ai compris que je pouvais programmer en basic .sinon VBA c'est difficile pour moi .Mais j'y arriverai un jour MDR à 67 ans

Nota:je ne veux pas les renommer ils y sont déja ,6 en tout en plus de l'autre classeur

merci aussi à toi de m'avoir répondu

@+

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
89,99 €Disque dur Western Digital Blue 4 To à 89,99 €
Valable jusqu'au 20 Avril

Cdiscount propose actuellement le disque dur Western Digital Blue 4 To à 89,99 €. Ce disque dur 3.5 pouces SATA III  tourne à 5400 tr/min. On le trouve ailleurs à partir de 100 €. 


> Voir l'offre
13,99 €Clé USB Sandisk Ultra 64 Go à double connectique USB 3.1 Type A et C à 13,99 €
Valable jusqu'au 20 Avril

Amazon fait une promotion sur la clé USB Sandisk Ultra 64 Go à double connectique USB 3.1 Type A et C qui passe à 13,99 € alors qu'on la trouve ailleurs à plus de 25 €. Cette clé USB  dispose d'un connecteur réversible USB Type C et d'un connecteur classique de type A. Grâce à elle, transférez en toute simplicité et rapidement (jusqu'à 150 Mo/s) vos fichiers entre vos smartphones, tablettes et ordinateurs. 


> Voir l'offre
19,16 €Clé USB 3.0 Sandisk Ultra 128 Go à 19,16 €
Valable jusqu'au 20 Avril

Amazon propose la clé USB Sandisk Ultra d'une capacité de 128 Go à 19,16 €. Cette clé USB 3.0 est compatible USB 2.0 et offre de bons débits d'environ 100 Mo/s en lecture et en écriture. Le connecteur est rétractable pour éviter qu'il prenne la poussière.


> Voir l'offre

Sujets relatifs
REPORTS REFERENCE CELLULE DANS CLASSEURS EXCEL LIES
Fusion plusieurs classeurs excel en VBA
Excel : Liaisons inter-classeurs & déplacement de
Liaisons Entre plusieurs Classeurs Excel
Comparer 2 classeurs excel sans macro
Liaison entre 2 classeurs excel
Synchronisation de deux classeurs excel
excel - ouvrir 2 classeurs
Encore et tjrs excel: liens entre diff classeurs..
Excel liaisons relatives inter classeurs
Plus de sujets relatifs à le nom de 2 classeurs en Excel VBA
 > Tous les forums > Forum Bureautique