Basique:Sélection Worksheet Excel depuis une macro ?

Basique:Sélection Worksheet Excel depuis une macro ? - VB/VBA/VBS - Programmation

Marsh Posté le 10-03-2010 à 08:40:44    

Bonjour à tous,
Je suis novice en programamtion VBA et ma question va probablement vous paraître stupide, mais je n'y arrive pas tout seul, et j'ai grand besoin de votre aide.
 
J'aimerais reprendre des données depuis plusieurs fichiers, dont les noms varient, pour les consolider dans un seul fichier de résultat. Si le nom du fichier source est connu, la macro de copier / coller ne me pose pas de problème. Mais lorsque je veux pouvoir choisir le fichier source à ouvrir, je bute sur ceci :
 
Sub Consolide()
    NomFichier = Application.GetOpenFilename()
    If NomFichier <> False Then
    MsgBox "Utilisation du fichier " & NomFichier, vbOKOnly, "Confirmation"
    Else: MsgBox "Opération annulée ", vbOKOnly, "Confirmation": End
    End If
    Workbooks.Open Filename:=NomFichier
    '
    ' Ici c'est bon, le fichier Excel est ouvert et je peux sélectionner mes
    ' données. Je fais diverses opérations, je copie dans un fichier résultat,
    ' puis j'aimerais resélectionner le fichier que je viens d'ouvrir
    '
    Windows(NomFichier).Activate
    '
    ' et ici J'obtient err. d'execution : 9
    ' L'indice n'appartient pas à la sélection
    '
End Sub
 
 
Au secours....  :??:  

Reply

Marsh Posté le 10-03-2010 à 08:40:44   

Reply

Marsh Posté le 12-03-2010 à 11:37:39    

essaye avec workbooks(NomFichier).activate

Reply

Marsh Posté le 12-03-2010 à 11:39:59    

Bonjour
 
Vérifie que tu as toujours quelque chose dans ta variable NomFichier


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 12-03-2010 à 16:48:00    

Ca ne fonctionne pas, j'ai toujours la même erreur.  
La variable NomFichier contient bien le nom du fichier puisque j'arrive à l'ouvrir.  
Mais est-ce que Windows() ou Workbooks() n'attend pas que le nom du fichier, (Ex: xxx.xls), sans tout le chemin ?
Si oui, comment faire ?

Reply

Marsh Posté le 12-03-2010 à 23:19:13    

Avant ton Windows(NomFichier).Activate fais un MsgBox NomFichier pour voir si ta variable contient toujours le nom du fichier.
Comme tu as du traitement au milieu que tu ne nous a pas mis, on ne sait pas s'il n'y a pas qqchose qui ferait perdre ta variable.


Message édité par SuppotDeSaTante le 12-03-2010 à 23:19:37

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 15-03-2010 à 09:02:08    

La variable contient toujours le nom du fichier complet, y compris son chemin. Je pense que c'est pour cela que la commande Windows ne fonctionne pas. Je devrais extraire seulement le nom du fichier de la variable NomFichier. Une idée simple pour faire ça ???

Reply

Marsh Posté le 16-03-2010 à 11:53:10    

Hello
 
Quelque chose comme ca devrait le faire :

Code :
  1. 'On utilise une autre variable pour le traitement, _
  2. pour avoir NomFichier comme variable de référence en fin de traitement _
  3. en gros, tu fais un copier/coller de ce code avant ton Windows(NomFichier).Activate
  4. Dim NomFichierLong As String, x As Integer
  5. NomFichierLong = NomFichier
  6. 'On passe chaque caractere un par un en partant de la fin
  7. For x = Len(NomFichierLong) To 1 Step -1
  8.     'Si le caractere sur lequel on est, est = à \
  9.     If Mid(NomFichierLong, x, 1) = "\" Then
  10.         'On prend les derniers caracteres jusqu'au \
  11.         NomFichier = Right(NomFichierLong, Len(NomFichierLong) - x)
  12.         'on sort de la boucle
  13.         Exit For
  14.     End If
  15. Next x


Message édité par SuppotDeSaTante le 16-03-2010 à 12:08:05

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 17-03-2010 à 09:43:11    

Super ! C'est parfait. Je m'en sort avec ça.
Dernière question : Je referme mon fichier avec  
    Windows(NomFichier).Activate
    ActiveWorkbook.Close False
Il ne me demande plus si je veux sauvegarder, mais par contre, comment éviter le message "Le presse papier contient un grand nombre d'information..." et la confirmation (Oui/Non/Annuler) ?

Reply

Marsh Posté le 17-03-2010 à 10:10:30    

Avec un Application.DisplayAlerts = False ca ne resou pas le souci ?


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 18-03-2010 à 14:33:44    

YesssSSS ! Merci infinimment pour votre précieuse aide ! C'est mon premier "vrai" script VBA, un peu plus compliqué que par enregistrement auto, et c'est GENIAL, ça va me faire gagner des heures !
@+

Reply

Marsh Posté le 18-03-2010 à 14:33:44   

Reply

Marsh Posté le 18-03-2010 à 20:36:10    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed