Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

décaler le contenu d'une colonne via la limite d'une ligne

10 réponses
Avatar
Ludox60
Bonjour!

Je m'explique, dans une colonne A, je vais rentrer beaucoup de données, je
voudrais qu'à partir de la ligne 10 (par exemple), mais donner soit
automatique décalées sur la colonne B et ainsi de suite (si une formule
existe, je pourrais alors
la copier sur l'étendue de ligne 10)...

Merci d'avance

Cdlt

10 réponses

Avatar
Daniel
Bonjour.
Est-ce que tu pourrais donner un exemple ?
Merci.
Daniel
"Ludox60" a écrit dans le message de
news:
Bonjour!

Je m'explique, dans une colonne A, je vais rentrer beaucoup de données, je
voudrais qu'à partir de la ligne 10 (par exemple), mais donner soit
automatique décalées sur la colonne B et ainsi de suite (si une formule
existe, je pourrais alors
la copier sur l'étendue de ligne 10)...

Merci d'avance

Cdlt


Avatar
Ludox60
Bonjour,

un exemple, dans la colonne A je vais entrer des données x dès la première
ligne, je voudrais qu'à la ligne 10 (par exemple), un retour chariot
s'effectue sur la première ligne de la colonne B et ainsi de suite, que je
rentre mes données dans la colonne B et qu'à la ligne 10, un retour m'envoi
àla colonne C.

en espérant avoir été assez clair...en tout cas je reste à disposition car
j'ai vraiment besoin de cette Fonction et/ou VBA

Merci


Bonjour.
Est-ce que tu pourrais donner un exemple ?
Merci.
Daniel
"Ludox60" a écrit dans le message de
news:
Bonjour!

Je m'explique, dans une colonne A, je vais rentrer beaucoup de données, je
voudrais qu'à partir de la ligne 10 (par exemple), mais donner soit
automatique décalées sur la colonne B et ainsi de suite (si une formule
existe, je pourrais alors
la copier sur l'étendue de ligne 10)...

Merci d'avance

Cdlt







Avatar
ThierryP
Bonjour Ludo,

Peut-être trop simple pour ton appli, et valable à partir de XL2002 :
- Tu déverouilles ta plage de saisie, puis Protéger la feuille ->Cocher
"Uniquement les cellules déverouillées". Dès lors, en arrivant en bas de
ta plage de données, le curseur passe automatiquement sur la 1ere ligne
de la colonne suivante.
Avec l'enregistreur, tu peux récupérer le code si tu veux l'insérer dans
une macro VBA.

@+ thierryp

Bonjour,

un exemple, dans la colonne A je vais entrer des données x dès la première
ligne, je voudrais qu'à la ligne 10 (par exemple), un retour chariot
s'effectue sur la première ligne de la colonne B et ainsi de suite, que je
rentre mes données dans la colonne B et qu'à la ligne 10, un retour m'envoi
àla colonne C.

en espérant avoir été assez clair...en tout cas je reste à disposition car
j'ai vraiment besoin de cette Fonction et/ou VBA

Merci



Bonjour.
Est-ce que tu pourrais donner un exemple ?
Merci.
Daniel
"Ludox60" a écrit dans le message de
news:

Bonjour!

Je m'explique, dans une colonne A, je vais rentrer beaucoup de données, je
voudrais qu'à partir de la ligne 10 (par exemple), mais donner soit
automatique décalées sur la colonne B et ainsi de suite (si une formule
existe, je pourrais alors
la copier sur l'étendue de ligne 10)...

Merci d'avance

Cdlt









Avatar
Daniel
Copie ce code dans ta feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 11 Then Exit Sub
Application.EnableEvents = False
If Range("A1").End(xlToRight).End(xlDown).Row = 65536 Then
Target.Cut Range("A1").End(xlToRight).Offset(1, 0)
ElseIf Range("A1").End(xlToRight).Column = 256 Then
Target.Cut Range("B1")
ElseIf Range("A1").End(xlToRight).End(xlDown).Row < 10 Then
Target.Cut Range("A1").End(xlToRight).End(xlDown).Offset(1, 0)
Else
Target.Cut Range("A1").End(xlToRight).Offset(0, 1)
End If
Application.EnableEvents = True
End Sub

Cordialement.
Daniel

"ThierryP" a écrit dans le message de
news:
Bonjour Ludo,

Peut-être trop simple pour ton appli, et valable à partir de XL2002 :
- Tu déverouilles ta plage de saisie, puis Protéger la feuille ->Cocher
"Uniquement les cellules déverouillées". Dès lors, en arrivant en bas de
ta plage de données, le curseur passe automatiquement sur la 1ere ligne de
la colonne suivante.
Avec l'enregistreur, tu peux récupérer le code si tu veux l'insérer dans
une macro VBA.

@+ thierryp

Bonjour,

un exemple, dans la colonne A je vais entrer des données x dès la
première ligne, je voudrais qu'à la ligne 10 (par exemple), un retour
chariot s'effectue sur la première ligne de la colonne B et ainsi de
suite, que je rentre mes données dans la colonne B et qu'à la ligne 10,
un retour m'envoi àla colonne C.

en espérant avoir été assez clair...en tout cas je reste à disposition
car j'ai vraiment besoin de cette Fonction et/ou VBA

Merci



Bonjour.
Est-ce que tu pourrais donner un exemple ?
Merci.
Daniel
"Ludox60" a écrit dans le message de
news:

Bonjour!

Je m'explique, dans une colonne A, je vais rentrer beaucoup de données,
je
voudrais qu'à partir de la ligne 10 (par exemple), mais donner soit
automatique décalées sur la colonne B et ainsi de suite (si une formule
existe, je pourrais alors
la copier sur l'étendue de ligne 10)...

Merci d'avance

Cdlt











Avatar
Ludox60
Merci, c'est presque ça!! Malheureusement, j'utilise Excel 2000, quand
j'execute le code, il me mets bien la valeur de ligne 10 dans la colonne de
droites, mais quand je continue de saisir des données, je reste sur la
colonne A....

mais merci, c'est déjà super!



Copie ce code dans ta feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 11 Then Exit Sub
Application.EnableEvents = False
If Range("A1").End(xlToRight).End(xlDown).Row = 65536 Then
Target.Cut Range("A1").End(xlToRight).Offset(1, 0)
ElseIf Range("A1").End(xlToRight).Column = 256 Then
Target.Cut Range("B1")
ElseIf Range("A1").End(xlToRight).End(xlDown).Row < 10 Then
Target.Cut Range("A1").End(xlToRight).End(xlDown).Offset(1, 0)
Else
Target.Cut Range("A1").End(xlToRight).Offset(0, 1)
End If
Application.EnableEvents = True
End Sub

Cordialement.
Daniel

"ThierryP" a écrit dans le message de
news:
Bonjour Ludo,

Peut-être trop simple pour ton appli, et valable à partir de XL2002 :
- Tu déverouilles ta plage de saisie, puis Protéger la feuille ->Cocher
"Uniquement les cellules déverouillées". Dès lors, en arrivant en bas de
ta plage de données, le curseur passe automatiquement sur la 1ere ligne de
la colonne suivante.
Avec l'enregistreur, tu peux récupérer le code si tu veux l'insérer dans
une macro VBA.

@+ thierryp

Bonjour,

un exemple, dans la colonne A je vais entrer des données x dès la
première ligne, je voudrais qu'à la ligne 10 (par exemple), un retour
chariot s'effectue sur la première ligne de la colonne B et ainsi de
suite, que je rentre mes données dans la colonne B et qu'à la ligne 10,
un retour m'envoi àla colonne C.

en espérant avoir été assez clair...en tout cas je reste à disposition
car j'ai vraiment besoin de cette Fonction et/ou VBA

Merci



Bonjour.
Est-ce que tu pourrais donner un exemple ?
Merci.
Daniel
"Ludox60" a écrit dans le message de
news:

Bonjour!

Je m'explique, dans une colonne A, je vais rentrer beaucoup de données,
je
voudrais qu'à partir de la ligne 10 (par exemple), mais donner soit
automatique décalées sur la colonne B et ainsi de suite (si une formule
existe, je pourrais alors
la copier sur l'étendue de ligne 10)...

Merci d'avance

Cdlt
















Avatar
Daniel
La macro est conçue selon le principe suivant :
Saisie en colonne A jusqu'à la ligne 11 la saisie en A11 est alors décalée
de B1 à B10 puis de C1 à C10 etc. Si tu saisis quelque chose en dessous (ou
au dessus) de la ligne 11, cette saisie n'est pas décalée.
Daniel
"Ludox60" a écrit dans le message de
news:
Merci, c'est presque ça!! Malheureusement, j'utilise Excel 2000, quand
j'execute le code, il me mets bien la valeur de ligne 10 dans la colonne
de
droites, mais quand je continue de saisir des données, je reste sur la
colonne A....

mais merci, c'est déjà super!



Copie ce code dans ta feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 11 Then Exit Sub
Application.EnableEvents = False
If Range("A1").End(xlToRight).End(xlDown).Row = 65536 Then
Target.Cut Range("A1").End(xlToRight).Offset(1, 0)
ElseIf Range("A1").End(xlToRight).Column = 256 Then
Target.Cut Range("B1")
ElseIf Range("A1").End(xlToRight).End(xlDown).Row < 10 Then
Target.Cut Range("A1").End(xlToRight).End(xlDown).Offset(1, 0)
Else
Target.Cut Range("A1").End(xlToRight).Offset(0, 1)
End If
Application.EnableEvents = True
End Sub

Cordialement.
Daniel

"ThierryP" a écrit dans le message de
news:
Bonjour Ludo,

Peut-être trop simple pour ton appli, et valable à partir de XL2002 :
- Tu déverouilles ta plage de saisie, puis Protéger la feuille ->Cocher
"Uniquement les cellules déverouillées". Dès lors, en arrivant en bas
de
ta plage de données, le curseur passe automatiquement sur la 1ere ligne
de
la colonne suivante.
Avec l'enregistreur, tu peux récupérer le code si tu veux l'insérer
dans
une macro VBA.

@+ thierryp

Bonjour,

un exemple, dans la colonne A je vais entrer des données x dès la
première ligne, je voudrais qu'à la ligne 10 (par exemple), un retour
chariot s'effectue sur la première ligne de la colonne B et ainsi de
suite, que je rentre mes données dans la colonne B et qu'à la ligne
10,
un retour m'envoi àla colonne C.

en espérant avoir été assez clair...en tout cas je reste à disposition
car j'ai vraiment besoin de cette Fonction et/ou VBA

Merci



Bonjour.
Est-ce que tu pourrais donner un exemple ?
Merci.
Daniel
"Ludox60" a écrit dans le message
de
news:

Bonjour!

Je m'explique, dans une colonne A, je vais rentrer beaucoup de
données,
je
voudrais qu'à partir de la ligne 10 (par exemple), mais donner soit
automatique décalées sur la colonne B et ainsi de suite (si une
formule
existe, je pourrais alors
la copier sur l'étendue de ligne 10)...

Merci d'avance

Cdlt


















Avatar
michdenis
Bonjour Daniel,

(je n'ai pas regardé à l'ensemble de la macro !)

Cette ligne est dangeureuse ...
Target.Cut Range("A1").End(xlToRight).Offset(0, 1)

Si tu n'as rien à A1 ET B1 , le curseur va se retrouver en IV1 et il va essayer de trouver la cellule à droite ("Offset(0, 1)") et
comme c'est impossible, la macro va planter !

Et si tu remplaçais par :

Range("A1").Cut Feuil2.Range("IV1").End(xlToLeft).Offset(0, 1)


Salutations!




"Daniel" a écrit dans le message de news:
Copie ce code dans ta feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 11 Then Exit Sub
Application.EnableEvents = False
If Range("A1").End(xlToRight).End(xlDown).Row = 65536 Then
Target.Cut Range("A1").End(xlToRight).Offset(1, 0)
ElseIf Range("A1").End(xlToRight).Column = 256 Then
Target.Cut Range("B1")
ElseIf Range("A1").End(xlToRight).End(xlDown).Row < 10 Then
Target.Cut Range("A1").End(xlToRight).End(xlDown).Offset(1, 0)
Else
Target.Cut Range("A1").End(xlToRight).Offset(0, 1)
End If
Application.EnableEvents = True
End Sub

Cordialement.
Daniel

"ThierryP" a écrit dans le message de
news:
Bonjour Ludo,

Peut-être trop simple pour ton appli, et valable à partir de XL2002 :
- Tu déverouilles ta plage de saisie, puis Protéger la feuille ->Cocher
"Uniquement les cellules déverouillées". Dès lors, en arrivant en bas de
ta plage de données, le curseur passe automatiquement sur la 1ere ligne de
la colonne suivante.
Avec l'enregistreur, tu peux récupérer le code si tu veux l'insérer dans
une macro VBA.

@+ thierryp

Bonjour,

un exemple, dans la colonne A je vais entrer des données x dès la
première ligne, je voudrais qu'à la ligne 10 (par exemple), un retour
chariot s'effectue sur la première ligne de la colonne B et ainsi de
suite, que je rentre mes données dans la colonne B et qu'à la ligne 10,
un retour m'envoi àla colonne C.

en espérant avoir été assez clair...en tout cas je reste à disposition
car j'ai vraiment besoin de cette Fonction et/ou VBA

Merci



Bonjour.
Est-ce que tu pourrais donner un exemple ?
Merci.
Daniel
"Ludox60" a écrit dans le message de
news:

Bonjour!

Je m'explique, dans une colonne A, je vais rentrer beaucoup de données,
je
voudrais qu'à partir de la ligne 10 (par exemple), mais donner soit
automatique décalées sur la colonne B et ainsi de suite (si une formule
existe, je pourrais alors
la copier sur l'étendue de ligne 10)...

Merci d'avance

Cdlt











Avatar
Daniel
Bonjour.
Tu as raison, la ligne étant sortie de la suite If ...End If
Je teste d'abord si il y a quelque chose dans la colonne (sinon Rowe536)
puis si seule la colonne A est remplie : (Column%6). Dans le premier cas,
on est au moins en colonne B, donc pas de danger.
Ca fait quand même plaisir de voir qu'il y en a des qui suivent.
Daniel
"michdenis" a écrit dans le message de news:
%
Bonjour Daniel,

(je n'ai pas regardé à l'ensemble de la macro !)

Cette ligne est dangeureuse ...
Target.Cut Range("A1").End(xlToRight).Offset(0, 1)

Si tu n'as rien à A1 ET B1 , le curseur va se retrouver en IV1 et il va
essayer de trouver la cellule à droite ("Offset(0, 1)") et
comme c'est impossible, la macro va planter !

Et si tu remplaçais par :

Range("A1").Cut Feuil2.Range("IV1").End(xlToLeft).Offset(0, 1)


Salutations!




"Daniel" a écrit dans le message de news:

Copie ce code dans ta feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 11 Then Exit Sub
Application.EnableEvents = False
If Range("A1").End(xlToRight).End(xlDown).Row = 65536 Then
Target.Cut Range("A1").End(xlToRight).Offset(1, 0)
ElseIf Range("A1").End(xlToRight).Column = 256 Then
Target.Cut Range("B1")
ElseIf Range("A1").End(xlToRight).End(xlDown).Row < 10 Then
Target.Cut Range("A1").End(xlToRight).End(xlDown).Offset(1, 0)
Else
Target.Cut Range("A1").End(xlToRight).Offset(0, 1)
End If
Application.EnableEvents = True
End Sub

Cordialement.
Daniel

"ThierryP" a écrit dans le message de
news:
Bonjour Ludo,

Peut-être trop simple pour ton appli, et valable à partir de XL2002 :
- Tu déverouilles ta plage de saisie, puis Protéger la feuille ->Cocher
"Uniquement les cellules déverouillées". Dès lors, en arrivant en bas de
ta plage de données, le curseur passe automatiquement sur la 1ere ligne
de
la colonne suivante.
Avec l'enregistreur, tu peux récupérer le code si tu veux l'insérer dans
une macro VBA.

@+ thierryp

Bonjour,

un exemple, dans la colonne A je vais entrer des données x dès la
première ligne, je voudrais qu'à la ligne 10 (par exemple), un retour
chariot s'effectue sur la première ligne de la colonne B et ainsi de
suite, que je rentre mes données dans la colonne B et qu'à la ligne 10,
un retour m'envoi àla colonne C.

en espérant avoir été assez clair...en tout cas je reste à disposition
car j'ai vraiment besoin de cette Fonction et/ou VBA

Merci



Bonjour.
Est-ce que tu pourrais donner un exemple ?
Merci.
Daniel
"Ludox60" a écrit dans le message de
news:

Bonjour!

Je m'explique, dans une colonne A, je vais rentrer beaucoup de données,
je
voudrais qu'à partir de la ligne 10 (par exemple), mais donner soit
automatique décalées sur la colonne B et ainsi de suite (si une formule
existe, je pourrais alors
la copier sur l'étendue de ligne 10)...

Merci d'avance

Cdlt
















Avatar
Daniel
Quoique, à la réflexion, si la saisie se poursuit sur toutes les colonnes,
la macro va effectivement planter sur la 257e. Qu'est-ce que je peux faire,
afficher un Msgbox ?
Daniel
"michdenis" a écrit dans le message de news:
%
Bonjour Daniel,

(je n'ai pas regardé à l'ensemble de la macro !)

Cette ligne est dangeureuse ...
Target.Cut Range("A1").End(xlToRight).Offset(0, 1)

Si tu n'as rien à A1 ET B1 , le curseur va se retrouver en IV1 et il va
essayer de trouver la cellule à droite ("Offset(0, 1)") et
comme c'est impossible, la macro va planter !

Et si tu remplaçais par :

Range("A1").Cut Feuil2.Range("IV1").End(xlToLeft).Offset(0, 1)


Salutations!




"Daniel" a écrit dans le message de news:

Copie ce code dans ta feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 11 Then Exit Sub
Application.EnableEvents = False
If Range("A1").End(xlToRight).End(xlDown).Row = 65536 Then
Target.Cut Range("A1").End(xlToRight).Offset(1, 0)
ElseIf Range("A1").End(xlToRight).Column = 256 Then
Target.Cut Range("B1")
ElseIf Range("A1").End(xlToRight).End(xlDown).Row < 10 Then
Target.Cut Range("A1").End(xlToRight).End(xlDown).Offset(1, 0)
Else
Target.Cut Range("A1").End(xlToRight).Offset(0, 1)
End If
Application.EnableEvents = True
End Sub

Cordialement.
Daniel

"ThierryP" a écrit dans le message de
news:
Bonjour Ludo,

Peut-être trop simple pour ton appli, et valable à partir de XL2002 :
- Tu déverouilles ta plage de saisie, puis Protéger la feuille ->Cocher
"Uniquement les cellules déverouillées". Dès lors, en arrivant en bas de
ta plage de données, le curseur passe automatiquement sur la 1ere ligne
de
la colonne suivante.
Avec l'enregistreur, tu peux récupérer le code si tu veux l'insérer dans
une macro VBA.

@+ thierryp

Bonjour,

un exemple, dans la colonne A je vais entrer des données x dès la
première ligne, je voudrais qu'à la ligne 10 (par exemple), un retour
chariot s'effectue sur la première ligne de la colonne B et ainsi de
suite, que je rentre mes données dans la colonne B et qu'à la ligne 10,
un retour m'envoi àla colonne C.

en espérant avoir été assez clair...en tout cas je reste à disposition
car j'ai vraiment besoin de cette Fonction et/ou VBA

Merci



Bonjour.
Est-ce que tu pourrais donner un exemple ?
Merci.
Daniel
"Ludox60" a écrit dans le message de
news:

Bonjour!

Je m'explique, dans une colonne A, je vais rentrer beaucoup de données,
je
voudrais qu'à partir de la ligne 10 (par exemple), mais donner soit
automatique décalées sur la colonne B et ainsi de suite (si une formule
existe, je pourrais alors
la copier sur l'étendue de ligne 10)...

Merci d'avance

Cdlt
















Avatar
michdenis
Bonjour Daniel,

| Qu'est-ce que je peux faire

If Range("IV1")<>"" then
Msgbox "On ferme le fichier est plein
exit sub
End if

Ou

Tu attends la version 2006 ;-))


Salutations!


"Daniel" a écrit dans le message de news:
Quoique, à la réflexion, si la saisie se poursuit sur toutes les colonnes,
la macro va effectivement planter sur la 257e. Qu'est-ce que je peux faire,
afficher un Msgbox ?
Daniel
"michdenis" a écrit dans le message de news:
%
Bonjour Daniel,

(je n'ai pas regardé à l'ensemble de la macro !)

Cette ligne est dangeureuse ...
Target.Cut Range("A1").End(xlToRight).Offset(0, 1)

Si tu n'as rien à A1 ET B1 , le curseur va se retrouver en IV1 et il va
essayer de trouver la cellule à droite ("Offset(0, 1)") et
comme c'est impossible, la macro va planter !

Et si tu remplaçais par :

Range("A1").Cut Feuil2.Range("IV1").End(xlToLeft).Offset(0, 1)


Salutations!




"Daniel" a écrit dans le message de news:

Copie ce code dans ta feuille :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row <> 11 Then Exit Sub
Application.EnableEvents = False
If Range("A1").End(xlToRight).End(xlDown).Row = 65536 Then
Target.Cut Range("A1").End(xlToRight).Offset(1, 0)
ElseIf Range("A1").End(xlToRight).Column = 256 Then
Target.Cut Range("B1")
ElseIf Range("A1").End(xlToRight).End(xlDown).Row < 10 Then
Target.Cut Range("A1").End(xlToRight).End(xlDown).Offset(1, 0)
Else
Target.Cut Range("A1").End(xlToRight).Offset(0, 1)
End If
Application.EnableEvents = True
End Sub

Cordialement.
Daniel

"ThierryP" a écrit dans le message de
news:
Bonjour Ludo,

Peut-être trop simple pour ton appli, et valable à partir de XL2002 :
- Tu déverouilles ta plage de saisie, puis Protéger la feuille ->Cocher
"Uniquement les cellules déverouillées". Dès lors, en arrivant en bas de
ta plage de données, le curseur passe automatiquement sur la 1ere ligne
de
la colonne suivante.
Avec l'enregistreur, tu peux récupérer le code si tu veux l'insérer dans
une macro VBA.

@+ thierryp

Bonjour,

un exemple, dans la colonne A je vais entrer des données x dès la
première ligne, je voudrais qu'à la ligne 10 (par exemple), un retour
chariot s'effectue sur la première ligne de la colonne B et ainsi de
suite, que je rentre mes données dans la colonne B et qu'à la ligne 10,
un retour m'envoi àla colonne C.

en espérant avoir été assez clair...en tout cas je reste à disposition
car j'ai vraiment besoin de cette Fonction et/ou VBA

Merci



Bonjour.
Est-ce que tu pourrais donner un exemple ?
Merci.
Daniel
"Ludox60" a écrit dans le message de
news:

Bonjour!

Je m'explique, dans une colonne A, je vais rentrer beaucoup de données,
je
voudrais qu'à partir de la ligne 10 (par exemple), mais donner soit
automatique décalées sur la colonne B et ainsi de suite (si une formule
existe, je pourrais alors
la copier sur l'étendue de ligne 10)...

Merci d'avance

Cdlt