[VBA-E] [Résolu] Copier une valeur provenant d'un autre classeur

Copier une valeur provenant d'un autre classeur [VBA-E] [Résolu] - VB/VBA/VBS - Programmation

Marsh Posté le 09-08-2006 à 17:06:27    

Bonjour,
 
J'ai un petit souci de débutant : je souhaite copier la valeur d'une cellule provenant d'un autre classeur ouvert.
 
Contexte :
   - deux classeurs ouverts ("test.xls" et "test2.xls" ) ;
   - dans chacun des classeurs la feuille "Feuil1" existe ;
 

Code :
  1. Workbooks("test" ).Sheets("Feuil1" ).Range("B1" ) = Workbooks("test2" ).Sheets("Feuil1" ).Range("A1" ).Value


 
Quand j'exécute j'obtiens l'erreur suivante : "Erreur d'exécution '9': L'indice n'appartient pas à la sélection."
 
Et bien sûr je ne vois pas où est l'erreur  :??:  
 
Y'a quelqu'un qui peut m'aider ?
 
Merci d'avance.  :jap:


Message édité par MadPenguin le 10-08-2006 à 13:22:04
Reply

Marsh Posté le 09-08-2006 à 17:06:27   

Reply

Marsh Posté le 09-08-2006 à 17:47:15    

Bonjour,
La syntaxe est bonne donc c'est le nom d'un classeur ou d'une feuille qui ne va pas. Présence d'un espace invisible ou faute de frappe...

Reply

Marsh Posté le 09-08-2006 à 18:29:53    

Bonsoir,
Remplaces test par test.xls  et test2 par test2.xls
Cordialement

Reply

Marsh Posté le 09-08-2006 à 23:37:19    

seniorpapou a écrit :

Bonsoir,
Remplaces test par test.xls  et test2 par test2.xls
Cordialement


 
Je suis trop nul !!!  :sweat: Je n'avais même pas fait attention à ça.
Merci à vous 2 pour le coup de main et désolé d'avoir posé une question pour rien.
 
Pour info, le problème était plus complexe à la base car je souhaitais récupérer la valeur de plusieurs cellules appartenant à un ou plusieurs classeurs que l'utilisateur sélectionnait.
Comme la sub que j'avais fait plantait à la ligne correspondant à la copie de la valeur, j'avais ouvert 2 fichiers et créé une sub toute simple (voir mon premier post) qui copiait une valeur d'un fichier déjà ouvert.
 
Pour me faire pardonner je copie ma sub finalisée au cas où ça interresse quelqu'un :
 


Sub TRANSFERT()
    ' Déclaration des variables
    Dim ligne As Integer
    Dim i As Integer
     
    ' Initialisation de la variable ligne à 2 (la ligne 1 est la ligne des titres)
    ligne = 2
     
    ' Boucle permettant de sélectionner plusieurs fichiers
    Do
        ' Sélection du classeur source à partir d'une fenêtre
        cheminfichier = Application.GetOpenFilename("Fichiers Excels (*.xls), *.xls" )
         
        ' Si on clique sur Annuler dans la fenêtre, on sort de la boucle
        If cheminfichier = False Then
            Exit Do
        End If
         
        'Ouverture du classeur source
        Workbooks.Open cheminfichier
         
        ' Récupération du nom du classeur + extension
        For i = Len(cheminfichier) To 1 Step -1
            If Mid(cheminfichier, i, 1) = "\" Then Exit For
        Next
        nomfichier = Mid(cheminfichier, i + 1, Len(cheminfichier))
         
        ' Copie des valeurs entre les classeurs
        ThisWorkbook.Sheets("Feuil2" ).Range("A" & ligne) = Workbooks(nomfichier).Sheets("Nombre" ).Range("F3" ).Value
        ThisWorkbook.Sheets("Feuil2" ).Range("B" & ligne) = Workbooks(nomfichier).Sheets("Nombre" ).Range("E6" ).Value
        ThisWorkbook.Sheets("Feuil2" ).Range("C" & ligne) = Workbooks(nomfichier).Sheets("Nombre" ).Range("E7" ).Value
        ThisWorkbook.Sheets("Feuil2" ).Range("D" & ligne) = Workbooks(nomfichier).Sheets("Nombre" ).Range("E8" ).Value
         
        ' Fermeture du classeur source
        Workbooks(nomfichier).Close
         
        ' Incrémentation du numéro de ligne
        ligne = ligne + 1
    Loop
End Sub


 
Vous remarquerez sans doute que je n'ai pas déclaré les variables cheminfichier et nomfichier car j'avais un doute sur leur type ; je sais que ça n'est pas très propre mais au moins ça fonctionne.  :D  
 
A+


Message édité par MadPenguin le 09-08-2006 à 23:38:18
Reply

Sujets relatifs:

Leave a Replay

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