deplacement d'une ligne sur la ligne supérieure puis suppression de la ligne devenue vide

Le
Nick
Bonjour

Sur un tableau excel, je souhaite déplacer une ligne sur deux sur la ligne
directement au dessus à la première case vide (en fait, celle située à la
septième colonne), puis supprimer la ligne qui a été déplacée.
Dans mon exemple, ca ne marche que pour la première ligne. Je souhaiterais
pouvoir le fin quelque soit le nombre de ligne du tableau.

Merci par avance pour votre aide !


Sub Delai2()
'
' Delai1 Macro
' Macro enregistrée le 15/03/2011 par xx
'

'

Dim i
For i = 1 To 200
Range("a" & i).Select
ActiveCell.Offset(1, 0).Range("A" & i).Select
Selection.Cut
ActiveCell.Offset(-1, 1).Range("G" & i).Select
ActiveSheet.Paste

Range("a" & i).Select
ActiveCell.Offset(1, 0).Range("A" & i).Select
Selection.Cut
ActiveCell.Offset(, 0).Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
Next
End Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
isabelle
Le #23214311
bonjour Nick,

lorsqu'il y a insertion ou suppression de lignes il faut commencer par
le bas et remonter,

For i = 200 To 1 Step -1


et adapter le reste de cette macro pour ce changement

isabelle
------------------------------------------------------------------

Le 2011-03-18 10:04, Nick a écrit :
Bonjour

Sur un tableau excel, je souhaite déplacer une ligne sur deux sur la ligne
directement au dessus à la première case vide (en fait, celle située à la
septième colonne), puis supprimer la ligne qui a été déplacée.
Dans mon exemple, ca ne marche que pour la première ligne. Je souhaiterais
pouvoir le fin quelque soit le nombre de ligne du tableau.

Merci par avance pour votre aide !


Sub Delai2()
'
' Delai1 Macro
' Macro enregistrée le 15/03/2011 par xx
'

'

Dim i
For i = 1 To 200
Range("a"& i).Select
ActiveCell.Offset(1, 0).Range("A"& i).Select
Selection.Cut
ActiveCell.Offset(-1, 1).Range("G"& i).Select
ActiveSheet.Paste

Range("a"& i).Select
ActiveCell.Offset(1, 0).Range("A"& i).Select
Selection.Cut
ActiveCell.Offset(, 0).Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
Next
End Sub



MANU
Le #23215101
Bonsoir,

Tu peux m'en dire + sur cette ligne, For i = 200 To 1 Step -1
J'essaie c'apprendre, est ce que ce veut dire tu pars de la ligne 200 et tu
remonte pas à pas de 1 jusqu'à tu trouve i ...

Merci

Manu

"isabelle" ilvpso$pv9$
bonjour Nick,

lorsqu'il y a insertion ou suppression de lignes il faut commencer par le
bas et remonter,

For i = 200 To 1 Step -1


et adapter le reste de cette macro pour ce changement

isabelle
------------------------------------------------------------------

Le 2011-03-18 10:04, Nick a écrit :
Bonjour

Sur un tableau excel, je souhaite déplacer une ligne sur deux sur la
ligne
directement au dessus à la première case vide (en fait, celle située à la
septième colonne), puis supprimer la ligne qui a été déplacée.
Dans mon exemple, ca ne marche que pour la première ligne. Je
souhaiterais
pouvoir le fin quelque soit le nombre de ligne du tableau.

Merci par avance pour votre aide !


Sub Delai2()
'
' Delai1 Macro
' Macro enregistrée le 15/03/2011 par xx
'

'

Dim i
For i = 1 To 200
Range("a"& i).Select
ActiveCell.Offset(1, 0).Range("A"& i).Select
Selection.Cut
ActiveCell.Offset(-1, 1).Range("G"& i).Select
ActiveSheet.Paste

Range("a"& i).Select
ActiveCell.Offset(1, 0).Range("A"& i).Select
Selection.Cut
ActiveCell.Offset(, 0).Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
Next
End Sub



isabelle
Le #23215351
voui, c'est en plein ça et plus, je te joint la parole du sage
Jacquouille à ce suget

Supposons que tu analyses une colonne pour y trouver des doublons et que
tu veuilles les supprimer.
Toutes les cel de A1:A10 contiennent la même valeur.
Au moyen d'une boucle, tu commences:
For each c in range ("A1:A10")
If c="idem" then Else Rows(c).Delete
du coup, tu supprimes la ligne 1.
Donc, c'est la ligne 2 qui devient 1, entrainant toutes les autres avec
elle pour faire place au fond du pannier à la ligne1 ( car on ne
supprime rien, on efface et on revoie à la 65536)ligne)
Tout fier d'avoir bien travaillé, ton PC passe donc très logiquement à
la ligne2.
mais, ô cata, la 2 était devenue1 qui a déjà été analysée, donc la
ligne1 (ex2) contiendra toujours "idem".
C'est donc pour "contrecarrer" cette démarche on ne peut plus logique
que nos "grosses têtes" commencent par le bas.
dans ce cas-ci, Isabelle commence à la dernière ligne occupée. (Ce que
nous appelions au début DelL, mais qui est encore plus concis comme
Isabelle l'écrit)
De cette manière, A10="idem"----> on supprime--> on s'en fout car c'est
A11 qui devient A10.
Boulot fait, donc on passe à A9, car il y a "le petit plus: step-1). A9
se fait analyser,.......

Voici donc pourquoi il faut répondre "au-dessus" pour les messages, mais
il faut commencer un boucle de destruction "par le bas".

ouf... -)
pS pour ce qui est du temps mis, analyser une ligne, qu'elle soit la
unième ou la dixième, c'est kif-kif.
Jacquouille
Manu
Le #23215841
Bonjour,

Merci Isabelle ainsi qu'au sage "Jacquouille "

Manu

"isabelle" im181h$6s7$
voui, c'est en plein ça et plus, je te joint la parole du sage Jacquouille
à ce suget

Supposons que tu analyses une colonne pour y trouver des doublons et que
tu veuilles les supprimer.
Toutes les cel de A1:A10 contiennent la même valeur.
Au moyen d'une boucle, tu commences:
For each c in range ("A1:A10")
If c="idem" then Else Rows(c).Delete
du coup, tu supprimes la ligne 1.
Donc, c'est la ligne 2 qui devient 1, entrainant toutes les autres avec
elle pour faire place au fond du pannier à la ligne1 ( car on ne supprime
rien, on efface et on revoie à la 65536)ligne)
Tout fier d'avoir bien travaillé, ton PC passe donc très logiquement à la
ligne2.
mais, ô cata, la 2 était devenue1 qui a déjà été analysée, donc la ligne1
(ex2) contiendra toujours "idem".
C'est donc pour "contrecarrer" cette démarche on ne peut plus logique que
nos "grosses têtes" commencent par le bas.
dans ce cas-ci, Isabelle commence à la dernière ligne occupée. (Ce que
nous appelions au début DelL, mais qui est encore plus concis comme
Isabelle l'écrit)
De cette manière, A10="idem"----> on supprime--> on s'en fout car c'est
A11 qui devient A10.
Boulot fait, donc on passe à A9, car il y a "le petit plus: step-1). A9 se
fait analyser,.......

Voici donc pourquoi il faut répondre "au-dessus" pour les messages, mais
il faut commencer un boucle de destruction "par le bas".

ouf... -)
pS pour ce qui est du temps mis, analyser une ligne, qu'elle soit la
unième ou la dixième, c'est kif-kif.
Jacquouille


Nick
Le #23224421
Merci pour le conseil...J'arrive àpeu pres a ce que je voulais...
Il me reste à parametrer i pour qu'il s'adapte à la longueur de mes
tableaux...ca peut varier de 100 a 10000



"Manu" 4d8475e2$0$32441$
Bonjour,

Merci Isabelle ainsi qu'au sage "Jacquouille "

Manu

"isabelle" im181h$6s7$
voui, c'est en plein ça et plus, je te joint la parole du sage
Jacquouille à ce suget

Supposons que tu analyses une colonne pour y trouver des doublons et que
tu veuilles les supprimer.
Toutes les cel de A1:A10 contiennent la même valeur.
Au moyen d'une boucle, tu commences:
For each c in range ("A1:A10")
If c="idem" then Else Rows(c).Delete
du coup, tu supprimes la ligne 1.
Donc, c'est la ligne 2 qui devient 1, entrainant toutes les autres avec
elle pour faire place au fond du pannier à la ligne1 ( car on ne supprime
rien, on efface et on revoie à la 65536)ligne)
Tout fier d'avoir bien travaillé, ton PC passe donc très logiquement à la
ligne2.
mais, ô cata, la 2 était devenue1 qui a déjà été analysée, donc la ligne1
(ex2) contiendra toujours "idem".
C'est donc pour "contrecarrer" cette démarche on ne peut plus logique que
nos "grosses têtes" commencent par le bas.
dans ce cas-ci, Isabelle commence à la dernière ligne occupée. (Ce que
nous appelions au début DelL, mais qui est encore plus concis comme
Isabelle l'écrit)
De cette manière, A10="idem"----> on supprime--> on s'en fout car c'est
A11 qui devient A10.
Boulot fait, donc on passe à A9, car il y a "le petit plus: step-1). A9
se fait analyser,.......

Voici donc pourquoi il faut répondre "au-dessus" pour les messages, mais
il faut commencer un boucle de destruction "par le bas".

ouf... -)
pS pour ce qui est du temps mis, analyser une ligne, qu'elle soit la
unième ou la dixième, c'est kif-kif.
Jacquouille






isabelle
Le #23224471
bonjour Nick,

pour la colonne A ça pourrais être

For i = Range("A65536").End(xlUp).Row To 1 Step -1

isabelle
------------------------------------------------------------------

Le 2011-03-22 09:16, Nick a écrit :
Merci pour le conseil...J'arrive àpeu pres a ce que je voulais...
Il me reste à parametrer i pour qu'il s'adapte à la longueur de mes
tableaux...ca peut varier de 100 a 10000



"Manu" 4d8475e2$0$32441$

Bonjour,

Merci Isabelle ainsi qu'au sage "Jacquouille "

Manu

"isabelle" im181h$6s7$

voui, c'est en plein ça et plus, je te joint la parole du sage
Jacquouille à ce suget

Supposons que tu analyses une colonne pour y trouver des doublons et que
tu veuilles les supprimer.
Toutes les cel de A1:A10 contiennent la même valeur.
Au moyen d'une boucle, tu commences:
For each c in range ("A1:A10")
If c="idem" then Else Rows(c).Delete
du coup, tu supprimes la ligne 1.
Donc, c'est la ligne 2 qui devient 1, entrainant toutes les autres avec
elle pour faire place au fond du pannier à la ligne1 ( car on ne supprime
rien, on efface et on revoie à la 65536)ligne)
Tout fier d'avoir bien travaillé, ton PC passe donc très logiquement à la
ligne2.
mais, ô cata, la 2 était devenue1 qui a déjà été analysée, donc la ligne1
(ex2) contiendra toujours "idem".
C'est donc pour "contrecarrer" cette démarche on ne peut plus logique que
nos "grosses têtes" commencent par le bas.
dans ce cas-ci, Isabelle commence à la dernière ligne occupée. (Ce que
nous appelions au début DelL, mais qui est encore plus concis comme
Isabelle l'écrit)
De cette manière, A10="idem"----> on supprime--> on s'en fout car c'est
A11 qui devient A10.
Boulot fait, donc on passe à A9, car il y a "le petit plus: step-1). A9
se fait analyser,.......

Voici donc pourquoi il faut répondre "au-dessus" pour les messages, mais
il faut commencer un boucle de destruction "par le bas".

ouf... -)
pS pour ce qui est du temps mis, analyser une ligne, qu'elle soit la
unième ou la dixième, c'est kif-kif.
Jacquouille











Nick
Le #23225401
Je suis enquiquinant, mais il faudrait que ce soit forcement une ligne paire
! la premiere meme si elle est vide sous la premiere ligne impaire pleine
!!



"isabelle" ima8m2$pdh$
bonjour Nick,

pour la colonne A ça pourrais être

For i = Range("A65536").End(xlUp).Row To 1 Step -1

isabelle
------------------------------------------------------------------

Le 2011-03-22 09:16, Nick a écrit :
Merci pour le conseil...J'arrive àpeu pres a ce que je voulais...
Il me reste à parametrer i pour qu'il s'adapte à la longueur de mes
tableaux...ca peut varier de 100 a 10000



"Manu" 4d8475e2$0$32441$

Bonjour,

Merci Isabelle ainsi qu'au sage "Jacquouille "

Manu

"isabelle" im181h$6s7$

voui, c'est en plein ça et plus, je te joint la parole du sage
Jacquouille à ce suget

Supposons que tu analyses une colonne pour y trouver des doublons et
que
tu veuilles les supprimer.
Toutes les cel de A1:A10 contiennent la même valeur.
Au moyen d'une boucle, tu commences:
For each c in range ("A1:A10")
If c="idem" then Else Rows(c).Delete
du coup, tu supprimes la ligne 1.
Donc, c'est la ligne 2 qui devient 1, entrainant toutes les autres avec
elle pour faire place au fond du pannier à la ligne1 ( car on ne
supprime
rien, on efface et on revoie à la 65536)ligne)
Tout fier d'avoir bien travaillé, ton PC passe donc très logiquement à
la
ligne2.
mais, ô cata, la 2 était devenue1 qui a déjà été analysée, donc la
ligne1
(ex2) contiendra toujours "idem".
C'est donc pour "contrecarrer" cette démarche on ne peut plus logique
que
nos "grosses têtes" commencent par le bas.
dans ce cas-ci, Isabelle commence à la dernière ligne occupée. (Ce que
nous appelions au début DelL, mais qui est encore plus concis comme
Isabelle l'écrit)
De cette manière, A10="idem"----> on supprime--> on s'en fout car
c'est
A11 qui devient A10.
Boulot fait, donc on passe à A9, car il y a "le petit plus: step-1). A9
se fait analyser,.......

Voici donc pourquoi il faut répondre "au-dessus" pour les messages,
mais
il faut commencer un boucle de destruction "par le bas".

ouf... -)
pS pour ce qui est du temps mis, analyser une ligne, qu'elle soit la
unième ou la dixième, c'est kif-kif.
Jacquouille











isabelle
Le #23225541
bonjour Nick,

heu.. pas du tous sur d'avoir compris,

ligne = Range("A65536").End(xlUp).Row
If ligne Mod 2 = 0 Then lignePair = ligne Else lignePair = ligne + 1
For i = lignePair To 1 Step -1


isabelle
------------------------------------------------------------------

Le 2011-03-22 14:48, Nick a écrit :
Je suis enquiquinant, mais il faudrait que ce soit forcement une ligne paire
! la premiere meme si elle est vide sous la premiere ligne impaire pleine
!!



"isabelle" ima8m2$pdh$

bonjour Nick,

pour la colonne A ça pourrais être

For i = Range("A65536").End(xlUp).Row To 1 Step -1

isabelle
------------------------------------------------------------------

Le 2011-03-22 09:16, Nick a écrit :

Merci pour le conseil...J'arrive àpeu pres a ce que je voulais...
Il me reste à parametrer i pour qu'il s'adapte à la longueur de mes
tableaux...ca peut varier de 100 a 10000



"Manu" 4d8475e2$0$32441$


Bonjour,

Merci Isabelle ainsi qu'au sage "Jacquouille "

Manu

"isabelle" im181h$6s7$


voui, c'est en plein ça et plus, je te joint la parole du sage
Jacquouille à ce suget

Supposons que tu analyses une colonne pour y trouver des doublons et
que
tu veuilles les supprimer.
Toutes les cel de A1:A10 contiennent la même valeur.
Au moyen d'une boucle, tu commences:
For each c in range ("A1:A10")
If c="idem" then Else Rows(c).Delete
du coup, tu supprimes la ligne 1.
Donc, c'est la ligne 2 qui devient 1, entrainant toutes les autres avec
elle pour faire place au fond du pannier à la ligne1 ( car on ne
supprime
rien, on efface et on revoie à la 65536)ligne)
Tout fier d'avoir bien travaillé, ton PC passe donc très logiquement à
la
ligne2.
mais, ô cata, la 2 était devenue1 qui a déjà été analysée, donc la
ligne1
(ex2) contiendra toujours "idem".
C'est donc pour "contrecarrer" cette démarche on ne peut plus logique
que
nos "grosses têtes" commencent par le bas.
dans ce cas-ci, Isabelle commence à la dernière ligne occupée. (Ce que
nous appelions au début DelL, mais qui est encore plus concis comme
Isabelle l'écrit)
De cette manière, A10="idem"----> on supprime--> on s'en fout car
c'est
A11 qui devient A10.
Boulot fait, donc on passe à A9, car il y a "le petit plus: step-1). A9
se fait analyser,.......

Voici donc pourquoi il faut répondre "au-dessus" pour les messages,
mais
il faut commencer un boucle de destruction "par le bas".

ouf... -)
pS pour ce qui est du temps mis, analyser une ligne, qu'elle soit la
unième ou la dixième, c'est kif-kif.
Jacquouille


















Publicité
Poster une réponse
Anonyme