Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
941 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA-Excel] selection d'une plage variable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA-Excel] selection d'une plage variable

n°2189115
larmabak
Posté le 06-05-2013 à 16:44:08  profilanswer
 

Bonjour à tous!
j'ai vu 2 autres sujets qui traitent du même thème chez HFr. mais les réponses apportés ne m'ont pas aidé :(
 
voilà ma situation,  
j'ai tout un tableau de donnée dans la feuille2, le tableau prend les colonnes A à F. le nombre de ligne utilisé dépend du produit étudié.  
le but de la manoeuvre est de copier la dernière partie de ce tableau, qui correspond à tous les retours garantis de l'année comptable en cours, pour coller tout ça dans la feuille 3.
 
j'ai donc déclaré 2 variables.

Code :
  1. Dim DernLigne As Long
  2. Dim PremLigne As Long
  3. DernLigne = Range("A" & Rows.Count).End(xlUp).Row
  4. PremLigne = [K19]
  5. 'l'enregistreur de macro m'a permis d'écrire.
  6. Range("A66:F140" ).Select
  7. 'Range("APremLigne:FDernLigne" ).Select  'j'ai tenté ce code, mais il ne reconnaît pas PremLigne=66 ni DernLigne=140 
  8. Selection.Copy
  9. Sheets("Feuil3" ).Select
  10. ActiveSheet.Paste


 
j'ai un code d'erreur '1004'
la methode 'Range' de l'objet '_global' à échoué.  
 
j'ai placé tous mes codes dans des modules.
 la partie Microsoft Excel Objet est vide.  
 
comment utiliser correctement mes 2 variables pour selectionner une plage de cellule?  
 
Merci


Message édité par larmabak le 07-05-2013 à 09:54:23
mood
Publicité
Posté le 06-05-2013 à 16:44:08  profilanswer
 

n°2189118
rufo
Pas me confondre avec Lycos!
Posté le 06-05-2013 à 17:26:52  profilanswer
 

Ca te dirait pas d'apprendre la syntaxe du VBA :??:
 
Range("A" & PremLigne & ":F" & DernLigne).Select
 
A noter que si tu veux pas t'embêter avec les lettres dans les adresses de cellules, la fonction Cells() sera plus pratique. :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2189141
Marc L
Posté le 06-05-2013 à 19:44:36  profilanswer
 

 
           Bonjour larmabak !
 
           En dehors du message d'erreur, c'est bien aussi d'indiquer la ligne le déclenchant et d'utiliser aussi les balises de code du forum !
 
           En ayant lu les autres sujets, tu as dû comprendre qu'un bon code est sans Select


Message édité par Marc L le 06-05-2013 à 19:45:15
n°2189186
larmabak
Posté le 07-05-2013 à 09:49:33  profilanswer
 

Bonjour Rufo! oui je suis là pour ça. apprendre.  
c'est vrai que j'avais completement oublié le caractère de concaténation &.  
et quand j'ai vu ton code j'me suis dit que j'était trop con de pas y avoir penser. mais j'ai une erreur de compilation quand je fini de taper la ligne, un séparateur de liste ou ) est attendu, le message surligne ":F"
je dois mettre un espace entre & et PremLigne?  
 
j'ai essayé aussi avec cells

Code :
  1. Cells(PremLigne,1:DernLigne,6).select


mais là aussi, je n'ai pas du utiliser la fonction correctement.  
on peut selectionner une plage de cellules avec Cells()?
 
ça fait un moment que j'ai appris le vba, je ne me souviens pu de toutes les syntaxes.  
 
 
Bonjour Marc L  
j'ai appris à programmer sur visualbasic, il y a 3 ans, et mtn je reprend le clavier sur Excel, je découvre peut à peut les fonctions et syntaxtes qui sont propre à Excel (comme Range et Cells), donc en effet, j'ai compris que Select c'était pas l'idéal, mais je ne sait toujours pas quoi mettre à la place.
 
Merci pour vos conseils!

n°2189187
Marc L
Posté le 07-05-2013 à 09:59:06  profilanswer
 

 
           Rien qu'en consultant l'aide de la méthode  Copy  appliquée à un objet de type Range et son exemple,
           tu te rendras compte qu'il n'y a donc pas besoin de Select - mieux vaut donc travailler directement sur l'objet -
           et au passage tu noteras l'existence de son argument Destination rendant du coup le Paste inutile aussi !
 

n°2189190
larmabak
Posté le 07-05-2013 à 10:18:01  profilanswer
 

!ok c'est un peu plus clair, soit on indique tout de suite la destination, soit Excel est obligé d'utiliser le press-papier, c'est beaucoup d'étapes inutile en plus!  
donc mon code doit devenir ,

Code :
  1. Range("A" & PremLigne & ":F" & DernLigne).copy(Feuil3!)


cette ligne est l'équivalent des 4 lignes que j'ai tapé avec mes selection copy paste etc ?  
 
mais j'ai toujours un problème pour déclarer ma plage de cellules....

n°2189203
Marc L
Posté le 07-05-2013 à 11:03:58  profilanswer
 

 
           En clair ?   J'ai prêté ma boule de cristal !
 

n°2189226
larmabak
Posté le 07-05-2013 à 13:05:52  profilanswer
 

c'est gentil Marc, mais je préfère éviter les boules de cristal, la divination c'est pas trop mon truc!  
 
 
j'ai tenté une autre écriture,  

Code :
  1. Range("A&PremLigne:F&DernLigne" ).copy(Feuil3!)


j'ai une erreur de compilation  
le caractère de déclaration de type ne correspond pas au type de données déclaré.  
Feuil3! est surligné.  
 
j'ai essayé différentes formulations mais pour le moment j'ai pas réussi à écrire correctement ma plage de cellule à copier ni ma destination.

n°2189244
Marc L
Posté le 07-05-2013 à 13:46:23  profilanswer
 

 
          L'exemple de Rufo est juste dans ton précédent code mais, ce qui ne l'est pas, c'est ton oubli de la cellule de destination !
 
          Pourtant l'exemple de l'aide est limpide :  […].Copy  Worksheets("Sheet2" ).Range("E5" )


Message édité par Marc L le 07-05-2013 à 13:53:55
n°2189274
larmabak
Posté le 07-05-2013 à 17:35:44  profilanswer
 

Range("A & PremLigne:F & DernLigne" ).CopyWorksheets("Feuil3" ).Range ("A1" )
 
cette ligne me donne toujours une erreur d'execution '1004' .
j'ai placé un espion express sur cette ligne, il cible l'expression Range, et lui donne pour valeur <Expression non défini dans le contexte>  
je ne sais pas ce que ça veux dire.  
 
et la ligne de Rufo,  
Range("A" & PremLigne & ":F" & DernLigne).CopyWorksheets("Feuil3" ).Range ("A1" )  
me donne une autre erreur d'execution '438':
Propriété ou méthode non gérée par cet objet
 
 
je suis de plus en plus perdu...  
donc je cherche tout ce que je n'ai pas dit... je suis sur une version 2010.
 
edit: mon dernier test

Code :
  1. Range(Cells(PremLigne, 1), Cells(DernLigne, 6)).Copy Worksheets("Feuil3" ).Range("A1" )


cette ligne fonctionne! enfin!  
mais bon je suis toujours pas content de moi, vu que je n'arrive pas à utiliser correctement & , je gère mal la place des " , : ; dans de simples fonctions comme Range
 
merci de vous casser la tête avec moi


Message édité par larmabak le 07-05-2013 à 17:56:08

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA-Excel] selection d'une plage variable

 

Sujets relatifs
Selection a colonne variable dans une autre feuillePeut on garder une variable php en mémoire?
[VBA][Excel] UserForm modeless dans une boucle[Résolu][ImageMagick] Passer une variable à convert : ne marche pas :(
[VBA] [Access] Soucis de byref et conversion de type[VBA][Excel] modif- selection onglet source.[résolu]
Plus de sujets relatifs à : [VBA-Excel] selection d'une plage variable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR