XL 2016 Copie de ligne suivant cellule active et colonne

Goose

XLDnaute Occasionnel
Bonjour, suivant le code ci-dessous,
j'aimerai couper cette ligne dans une autre ligne a fonction de la cellule active et d'une colonne définie (pour éviter un décalage par mégarde) ?
VB:
Sub Copy1()
Range(Cells(ActiveCell.Row, 8), Cells(ActiveCell.Row, 10)).Cut
End Sub

Possible ou pas ?
bye
 

Goose

XLDnaute Occasionnel
Bjr,
le souci que je rencontre c'est que je suis obliger systématiquement de positionner la cellule active dans la colonne (C5:C9) pour copier les dossards de la plage (C15:G18) !!
si, par exemple, cette cellule active se trouve en D6 par mégarde, tout se décale d'une case !! je veux donc éviter cette erreur.
d’où ma question:
comment obliger la macro a copier (les dossards) de la ligne du bas vers la ligne du haut ? (quelque soit la position la cellule active sur les lignes du haut choisie)
 

Phil69970

XLDnaute Barbatruc
@Goose

Tu veux copier C15:G18 vers C5:G8 ?
1651830040598.png


Remarques :
1) Tu as 4 lignes d'un côté et 5 de l'autre !

2) Tu veux copier ligne par ligne ou tout d'un bloc ?

3) Une fois copier on vide la zone C15:G18 ?

4) Tu copies suivant un critère exemple des que les 4 joueurs d'une ligne sont remplis ?
etc ....

Tu vois d'une question qui te semble simple tes explications ne me permettent pas de savoir ce que tu veux précisément !!!!

@Phil69970
 

vgendron

XLDnaute Barbatruc
Hello

je pressens que tu ignores qu'on peut copier coller une ligne (ou couper coller) une plage d'un endroit à un autre SANS selectionner la destination

exemple
VB:
range("B5:C6").copy destination:= range("E8:F9")
quelque soit ta cellule active, B5:C6 sera copié en E8:F9
 

Goose

XLDnaute Occasionnel
la procédure actuelle est la suivante:
je positionne ma cellule active en (C5 ou C6 ou C7 ou C8 ou C9) suivant une table dispo de la plage (b5:b9), puis je clique sur la "macro d'une ligne du bas" suivant le statut de la cellule (B15 ou B16 ou B17 ou B18)
Les numéros de dossards sont ainsi copier à la table choisie !!
mais je dois toujours respecter la position de la cellule active en C sinon ça décale la position des dossards voir cela supprime certaines formules de la plage H5:K9 !!
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Hello
idem, c'est vraiment pas clair.. je pense qu'il y a un problème de vocabulaire et qu'il y a des confusions du fait que tu as mis en entetes des mots comme Table, Tablo qui en excel sont déjà des mots qui définissent des tableaux.
ensuite tu parles de copier un dossard.. mais nulle part tu n'explique ce qu'est un Dossard..

tu sembles vouloir selectionner la LIGNE dans lasquelle les infos sont copiées
la lgine d'origine est ensuite effacée selon un critère que je ne comprend pas.. si en colonne I, i y a quelque chose???

comme expliqué plus haut: tu n'as pas besoin de sélectionner une ligne pour désigner la destination: la macro peut trouver toute seule une ligne (entre 5 et 9) disponible)

en attendant:
VB:
Sub Selection5()
Dim R As Object

Set R = ActiveSheet.Shapes(Application.Caller).TopLeftCell
Set CelDest = Range("C" & ActiveCell.Row) 'pour définir la cellule de destination en colonne C de la ligne selectionnée

Range(R.Offset(0, 2).Address, R.Offset(0, 6).Address).Copy Destination:=CelDest
If CelDest.Offset(0, 6) <> "" Then
    Range(R.Offset(0, 2).Address, R.Offset(0, 6).Address).ClearContents
End If
End Sub
 

Discussions similaires

Réponses
17
Affichages
760

Statistiques des forums

Discussions
311 734
Messages
2 082 020
Membres
101 872
dernier inscrit
Colin T