Selection a colonne variable dans une autre feuille

Selection a colonne variable dans une autre feuille - VB/VBA/VBS - Programmation

Marsh Posté le 03-05-2013 à 20:07:36    

Bonjour,
 
Je cherche à sélectionner une plage de donnée (dans le but de la copier) avec un numéro de colonne variable sur une autre feuille du classeur.
Si je ne sort pas de ma feuille il n'y a pas de problème. Mais avec ces codes j'ai toujours un message d'erreur :
 

Code :
  1. Sheets("FeuilleB" ).Range(Cells(i, 1), Cells(i, 10)).Select


 

Code :
  1. Worksheets("FeuilleB" ).Activate
  2. ActiveSheet.Range(Cells(i, 1), Cells(i, 10)).Select


 
Et d'autres tournures que j'ai essayé en vain.
 
Une idée ?
 
Merci !

Reply

Marsh Posté le 03-05-2013 à 20:07:36   

Reply

Marsh Posté le 03-05-2013 à 20:42:18    

 
         Bonjour.
 

  • Sans message d'erreur précis ni le numéro de la ligne déclenchant l'erreur …
  • Seule une plage dans la feuille active est sélectionnable.
  • La valeur de la variable i correspondant au numéro de la ligne (voir l'aide de la propriété Cells !) doit être vérifiée …
  • Consulter l'aide de la méthode  Copy  associée à  Range  et son exemple pour se rendre compte de l'inutilité d'une sélection ‼

Message cité 1 fois
Message édité par Marc L le 03-05-2013 à 20:51:13
Reply

Marsh Posté le 03-05-2013 à 22:19:05    

L'erreur est toujours déclenchée par la ligne ou il y a le select. J'ai aussi essayé avec un range.copy mais le problème est le même.
C'est une erreur 1004.

 

Pour i, j'ai juste mis

 
Code :
  1. dim i as integer
  2. i = 1


Message édité par Swatch_n7 le 03-05-2013 à 22:21:01
Reply

Marsh Posté le 04-05-2013 à 00:21:50    

 
           mais le problème est le même.  
           Sans voir le code, je peux en douter !      Erreur 1004, et le message dit quoi ?
 
           Avec i égal à 1, cela correspond donc à la plage A1:J1 …
           En supposant la feuille contenue dans le classeur actif, code à tester (sans argument Destination) :

     Worksheets("FeuilleB" ).Range("A1:J1" ).Copy


 

Reply

Marsh Posté le 06-05-2013 à 04:58:25    

Votre code fonctionne, mais il ne me permet pas d'avoir une colonne variable.
 
Voici le code que j'ai écris en entier
 

Code :
  1. Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  2. Dim i As Integer
  3. ' Pour l'exemple
  4. i = 1
  5. Worksheets("Feuil2" ).Range(Cells(i, 1), Cells(i, 10)).Copy
  6. End Sub


 
L'erreur survient au niveau de la ligne 7.
"Erreur d'exxécution '1004':
Erreur défnie par l'application ou par l'objet"
 
Merci pour votre aide.

Reply

Marsh Posté le 06-05-2013 à 12:53:57    

 
         Eh oui, trois jours de perdus à cause d'une problématique mal exposée ‼ …
 
         Pourquoi mon code test fonctionne-t-il ?
         Tout simplement parce qu'il n'y a pas d’ambiguïté quant au Range rattaché à la feuille.
 
         Le code d'origine, non seulement situé dans un module de classe d'une feuille (au fait laquelle ?)
         et évidemment dans un évènement (donc ne pas oublier Target) - comment aurions-nous pu le deviner ? -
         dans lequel certes le Range est bien rattaché mais pas les Cells le composant, d'où l'erreur !
 
         Afin d'éviter l'usine à gaz, une vue d'ensemble et le code complet de l'événement SelectionChange sont nécessaires.

  • Pourquoi utiliser cet évènement, dans quelle feuille ?
  • Quel est le facteur déclenchant la copie ?
  • La feuille à copier est-elle dans le même classeur que celle contenant le code ?
  • Quelle est précisément la destination de la copie ?

 

Reply

Sujets relatifs:

Leave a Replay

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