Cellule active encore et toujours

alain.dutoit

XLDnaute Nouveau
Re salut tout le monde,

Dans le même style de ma question concernant l'impression, je voudrais que quand j'imprime le carnet de mon tireur, je copie les valeurs de ma colonne W à la colonne AH.

Quel code introduire afin de pouvoir copier quelque soit la cellule active?

Je vous copie la maccro que j'active au début pour imprimer avec quelques commentaires explicatifs supplémentaire.


Merci beaucoup d'avance.

Alain


Sub impression_3()
' Imaginons que je souhaite impimer la feuille de stand du tireur à la ligne 23.
' Je sélectionne la cellule A23 et je lance ma macccro. Si la ligne ne changais
' jamais ça ne serais pas un problème.
' Mais le problème c'est que ça doit pouvoir
' fonctionner avec toutes les lignes, et là je bloque....

ActiveCell.Select
Selection.Copy
Sheets("Feuille de stand").Select
Range("g2").Select 'cellule de destination
' Colle la valeur de la ligne A23
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("Individuel").Select
'A partir d'ici je ne sais pas comment garder en mémoire que j'ai imprimer les valeurs de la ligne 23 ou une autre


End Sub
 

Chloulou

XLDnaute Occasionnel
Re : Cellule active encore et toujours

En fait avec VBA , il est rare qu'il soit impératif de faire appel à la fonction select, le mieux est de désigner l'adresse exacte de la cellule, alors à la place de
Code:
 ActiveCell.select
Selection.copy
il faut mettre :
Code:
 Worksheets("Ta feuille").range(cells(Ligne1,Colonne1), cells(Ligne Fin, colonneFin)).copy

Pour Selectionner une colonne complète, utilise :
Code:
 range("A:A")
par exemple

et c'est pareil pour la fonction paste
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Cellule active encore et toujours

Bonjour Alain, Chloulou, bonjour le forum

Alain, je suis désolé, je n'ai absolument rien compris à ta question. Tu parles de colonne W puis AH et dans le code il est questione de A23 et de G2... Je pense qu'un petit fichier exemple serait le bienvenu.

Dans un des tes fils je t'ai fait, comme te le signale Chloulou, une remarque concernant Select . Il est important que tu appliques ces conseils pour gagner en rapidité d'exécution.
 

alain.dutoit

XLDnaute Nouveau
Re : Cellule active encore et toujours

Salut Robert, salut Chloulou,

Désolé de m'être mal expliquer....

J'ai modifié la maccro de façon à supprimer les Select, désolé je n'avais pas vu ton message Robert, et j'avais pas très bien compris ce qui était précédemment expliquer.

Par contre je ne sais toujours pas comment faire pour copier les cellules qui sont X colonne plus loin que la cellule active.

Je joint le fichier ou il y a le descriptif exact de ce que fais ma maccro et ce que j'aimerais encore faire. J'ai du passablement l'épurer afin d'arriver à moins de 50k mais ça devrait être ok.

Meilleures salutations

Alain
 

Pièces jointes

  • test corjon2.zip
    29.5 KB · Affichages: 28
  • test corjon2.zip
    29.5 KB · Affichages: 25
  • test corjon2.zip
    29.5 KB · Affichages: 28

Robert

XLDnaute Barbatruc
Repose en paix
Re : Cellule active encore et toujours

Bonjour le Fil, bonjour le forum,

Essaie comme ça :

Code:
Sub impression_feuille()
'
' impression_feuille Macro
' Macro enregistrée le 17.08.2007 par Tir Sportif Echallens
'
'
Sheets("Feuille de stand").Range("G2").Value = ActiveCell.Value
Sheets("Feuille de stand").Range("AH23").Value = Cells("W" & ActiveCell.Row).Value 'mais pourquoi AH23????
'tu peux aussi utiliser la propriété Offset(x,y) qui
'décale de x lignes et y colonnes en fonction de la cellule de départ
'du Style :
'Sheets("Feuille de stand").Range("AH23").Value = ActiveCell.Offset(0, 21).Value
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("Individuel").Select
End Sub
 

alain.dutoit

XLDnaute Nouveau
Re : Cellule active encore et toujours

Hello, merci bcp pour le coup de main.

Est-ce que j'oserais te demander comment tu as construit ton code....... Ben oui, sur le fond je suis motivé à comprendre ce qui se passe..... :D

Merci bcp d'avance.

Alain

Bonjour le Fil, bonjour le forum,

Essaie comme ça :

Code:
Sub impression_feuille()
'
' impression_feuille Macro
' Macro enregistrée le 17.08.2007 par Tir Sportif Echallens
'
'
Sheets("Feuille de stand").Range("G2").Value = ActiveCell.Value
Sheets("Feuille de stand").Range("AH23").Value = Cells("W" & ActiveCell.Row).Value 'mais pourquoi AH23????
'tu peux aussi utiliser la propriété Offset(x,y) qui
'décale de x lignes et y colonnes en fonction de la cellule de départ
'du Style :
'Sheets("Feuille de stand").Range("AH23").Value = ActiveCell.Offset(0, 21).Value
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("Individuel").Select
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Cellule active encore et toujours

Bonjour le fil, bonjour le forum,

Excuse-moi mes codes étaient faux et pire, non testés...
On peut copier la valeur de la cellule active (de l'onglet actif) et la coller dans une autre cellule d'un autre onglet mais on peut dire aussi à l'autre cellule de l'autre onglet d'avoir la même valeur que la cellule active.
C'est ce que j'ai tenté de faire. Plutôt que de copier la valeur de la cellule active (A23 dans ton exemple) et la copier dans la cellule G2 de l'onglet Feuille de stand...
j'ai dit à la cellule G2 de l'onglet Feuille de stand d'avoir la même valeur que la cellule active :
Code:
 Sheets("Feuille de Stand").Range("G2").Value=ActiveCell.Value
la propriété Row me renvoie le numéro de ligne. Je me suis servi ensuite de AvtiveCell.Row pour obtenir la valeur de la cellule de la colonne W de la même ligne que la cellule active par Range("W" & ActiveCell.Row). Mais j'ai utilisé Cells("W" & ActiveCell.Row). Avec Cells il aurait fallu utiliser la ligne et la colonne donc Cells(Activecell.row, 23) qui est l'équivalent de Range("W" & Activecell.row).
La Deuxième méthode utilise la proprété Offset qui décale de x lignes et y colonnes. ActiveCell.Offset(0, 22) décale 22 colonnes à doite de la cellule active donc si je suis en A23 cela me renvoie en W23. Je m'était trompé à cause de la colonne J qui est masquée.
les codes exacts seraient donc (excuse-moi pour les plantons) :
Code:
Sheets("Feuille de Stand").Range("G2").Value = ActiveCell.Value
celui-là il ne change pas (des fois j'arrive même à pas me planter t'as vu...)
Code:
Sheets("Feuille de Stand").Range("AH23").Value = Range("W" & ActiveCell.Row).Value
ou
Code:
Sheets("Feuille de Stand").Range("AH23").Value = Cells(ActiveCell,Row, 23).Value
ou
Code:
Sheets("Feuille de Stand").Range("AH23").Value = ActiveCell.Offset(0, 22).Value
 

alain.dutoit

XLDnaute Nouveau
Re : Cellule active encore et toujours

Hello Robert, salut le forum,

merci bcp pour ta précieuse aide ainsi que tes explications. J'ai quand même du modifié un petit chouilla ton code. Il me collait la valeur toujours dans la même cellule quelque soit la ligne que je souhaitais imprimé.

J'ai donc modifié comme suit:

ActiveCell.Offset(0, 21).Copy
ActiveCell.Offset(0, 32).PasteSpecial xlPasteValues

Je ne sais pas si il y avait plus simple mais en tout cas ça fonctionne parfaitement.

Une fois encore MERCI...

Alain
 

Bebere

XLDnaute Barbatruc
Re : Cellule active encore et toujours

bonjour Chloulou,Robert,Alain
copie valeur et format
ActiveCell.Offset(0, 21).copy destination:=ActiveCell.Offset(0, 32)
ou rien que valeur
ActiveCell.Offset(0, 32).value=ActiveCell.Offset(0, 21).value
à bientôt
 

Discussions similaires

Statistiques des forums

Discussions
312 339
Messages
2 087 407
Membres
103 539
dernier inscrit
RAPH2012