OVH Cloud OVH Cloud

Curseur colonne A et 1ère cellule vide vers le bas

9 réponses
Avatar
DC
Bonjour à tous,...............Excel 2000 sur XP

Merci de me lire..........C'est sympa...!!....Bonne Journée...!!

Voilà, j'aimerais si c'est possible, par ex : dans un paragraphe de 20
lignes, si j'ai le curseur en 12ème ligne et sur la colonne G, disposer d'un
code, que je mettrais en tout début de macro, pour que le curseur aille se
positionner en colonne A et à la première cellule vide vers le bas, avant
l'éxécution de cette macro,

A savoir qu'en dessous, je peux avoir d'autres paragraphes, donc çà
complique un peut les choses, et je ne sais pas comment solutionner le
problème,.........Merci de me venir en aide...!!

Salutations!...........Merci d'avance........Bon WE...........DC

9 réponses

Avatar
Patrick BASTARD
Bonjour, *DC*

Pas tout compris. Comment se déclanche ta macro ?

Pour sélectionner la première cellule vide de la colonne A, à partir de A1
(à adapter à ton cas) :

Range("A1").End(xlDown).Offset(1, 0).Select

Eventuellement dans une procédure évenementielle après validation de G12.


--
Bien amicordialement,
P. Bastard

Bonjour à tous,...............Excel 2000 sur XP

Merci de me lire..........C'est sympa...!!....Bonne Journée...!!

Voilà, j'aimerais si c'est possible, par ex : dans un paragraphe de 20
lignes, si j'ai le curseur en 12ème ligne et sur la colonne G,
disposer d'un code, que je mettrais en tout début de macro, pour que
le curseur aille se positionner en colonne A et à la première cellule
vide vers le bas, avant l'éxécution de cette macro,

A savoir qu'en dessous, je peux avoir d'autres paragraphes, donc çà
complique un peut les choses, et je ne sais pas comment solutionner le
problème,.........Merci de me venir en aide...!!

Salutations!...........Merci d'avance........Bon WE...........DC


Avatar
LSteph
Bonjour,
A noter qu'il faudra faire attention à la place qui reste en dessous pour la
suite...
donc tu peux appeler gauchebas au début de tamacro
La routine erreur est là pour: si on est déjà en 1ère colonne,et/ou dernière
ligne
ou que l'on ne soit pas dans un paragraphe, selon le cas on ira
soit à la cellule en dessous soit celle en dessous du prochain §

''''''''''''
Sub gauchebas()
On Error GoTo fin
With Cells(ActiveCell.Row, 1)
.End(xlDown).Offset(1, 0).Select
If Not IsEmpty(Selection.Cells(1)) Then
Selection.End(xlDown).Offset(1, 0).Select
End If
Exit Sub
fin:
.Offset(1, 0).Select
End With
End Sub
'''
Sub tamacro()
gauchebas
MsgBox "on y est"
'lasuite
End Sub

''''''''''''''
'lSteph

"DC" a écrit dans le message de news:
43a41c70$0$20179$
Bonjour à tous,...............Excel 2000 sur XP

Merci de me lire..........C'est sympa...!!....Bonne Journée...!!

Voilà, j'aimerais si c'est possible, par ex : dans un paragraphe de 20
lignes, si j'ai le curseur en 12ème ligne et sur la colonne G, disposer
d'un code, que je mettrais en tout début de macro, pour que le curseur
aille se positionner en colonne A et à la première cellule vide vers le
bas, avant l'éxécution de cette macro,

A savoir qu'en dessous, je peux avoir d'autres paragraphes, donc çà
complique un peut les choses, et je ne sais pas comment solutionner le
problème,.........Merci de me venir en aide...!!

Salutations!...........Merci d'avance........Bon WE...........DC





Avatar
DC
Bonsoir à tous...............Bonsoir Patrick BASTARD et LSteph,

Merci de vos réponses positives, c'est parfait et çà fonctionne très bien,

J'ai opté pour la version de LSteph que j'ai un peu adaptée,
( malgrès mes lacunes en la matière )........ mais bon...!!
'--------------------------------------------------
On Error GoTo fin
With Cells(ActiveCell.Row, 1)
.End(xlDown).Offset(1, 0).Select
If Not IsEmpty(Selection.Cells(1)) Then
Selection.End(xlDown).Offset(1, 0).Select
End If
fin:
End With
'----------------------------------------------------
Je lai positionnée en début de ma procédure de macro et çà fonctionne à
merveille, comme je l'espérais...........Merci...!!

Salutation!...........un grand Merci...!!.........bon WE.......DC


"LSteph" a écrit dans le message de news:
%
Bonjour,
A noter qu'il faudra faire attention à la place qui reste en dessous pour
la suite...
donc tu peux appeler gauchebas au début de tamacro
La routine erreur est là pour: si on est déjà en 1ère colonne,et/ou
dernière ligne
ou que l'on ne soit pas dans un paragraphe, selon le cas on ira
soit à la cellule en dessous soit celle en dessous du prochain §

''''''''''''
Sub gauchebas()
On Error GoTo fin
With Cells(ActiveCell.Row, 1)
.End(xlDown).Offset(1, 0).Select
If Not IsEmpty(Selection.Cells(1)) Then
Selection.End(xlDown).Offset(1, 0).Select
End If
Exit Sub
fin:
.Offset(1, 0).Select
End With
End Sub
'''
Sub tamacro()
gauchebas
MsgBox "on y est"
'lasuite
End Sub

''''''''''''''
'lSteph

"DC" a écrit dans le message de news:
43a41c70$0$20179$
Bonjour à tous,...............Excel 2000 sur XP

Merci de me lire..........C'est sympa...!!....Bonne Journée...!!

Voilà, j'aimerais si c'est possible, par ex : dans un paragraphe de 20
lignes, si j'ai le curseur en 12ème ligne et sur la colonne G, disposer
d'un code, que je mettrais en tout début de macro, pour que le curseur
aille se positionner en colonne A et à la première cellule vide vers le
bas, avant l'éxécution de cette macro,

A savoir qu'en dessous, je peux avoir d'autres paragraphes, donc çà
complique un peut les choses, et je ne sais pas comment solutionner le
problème,.........Merci de me venir en aide...!!

Salutations!...........Merci d'avance........Bon WE...........DC









Avatar
LSteph
Attention, tu as viré l'instruction après fin: ,ce qui met la routine erreur
à l'eau,
si tu es en dernière ligne d'un paragraphe.

"DC" a écrit dans le message de news:
43a4398a$0$29217$
Bonsoir à tous...............Bonsoir Patrick BASTARD et LSteph,

Merci de vos réponses positives, c'est parfait et çà fonctionne très bien,

J'ai opté pour la version de LSteph que j'ai un peu adaptée,
( malgrès mes lacunes en la matière )........ mais bon...!!
'--------------------------------------------------
On Error GoTo fin
With Cells(ActiveCell.Row, 1)
.End(xlDown).Offset(1, 0).Select
If Not IsEmpty(Selection.Cells(1)) Then
Selection.End(xlDown).Offset(1, 0).Select
End If
fin:
End With
'----------------------------------------------------
Je lai positionnée en début de ma procédure de macro et çà fonctionne à
merveille, comme je l'espérais...........Merci...!!

Salutation!...........un grand Merci...!!.........bon WE.......DC


"LSteph" a écrit dans le message de news:
%
Bonjour,
A noter qu'il faudra faire attention à la place qui reste en dessous pour
la suite...
donc tu peux appeler gauchebas au début de tamacro
La routine erreur est là pour: si on est déjà en 1ère colonne,et/ou
dernière ligne
ou que l'on ne soit pas dans un paragraphe, selon le cas on ira
soit à la cellule en dessous soit celle en dessous du prochain §

''''''''''''
Sub gauchebas()
On Error GoTo fin
With Cells(ActiveCell.Row, 1)
.End(xlDown).Offset(1, 0).Select
If Not IsEmpty(Selection.Cells(1)) Then
Selection.End(xlDown).Offset(1, 0).Select
End If
Exit Sub
fin:
.Offset(1, 0).Select
End With
End Sub
'''
Sub tamacro()
gauchebas
MsgBox "on y est"
'lasuite
End Sub

''''''''''''''
'lSteph

"DC" a écrit dans le message de news:
43a41c70$0$20179$
Bonjour à tous,...............Excel 2000 sur XP

Merci de me lire..........C'est sympa...!!....Bonne Journée...!!

Voilà, j'aimerais si c'est possible, par ex : dans un paragraphe de 20
lignes, si j'ai le curseur en 12ème ligne et sur la colonne G, disposer
d'un code, que je mettrais en tout début de macro, pour que le curseur
aille se positionner en colonne A et à la première cellule vide vers le
bas, avant l'éxécution de cette macro,

A savoir qu'en dessous, je peux avoir d'autres paragraphes, donc çà
complique un peut les choses, et je ne sais pas comment solutionner le
problème,.........Merci de me venir en aide...!!

Salutations!...........Merci d'avance........Bon WE...........DC













Avatar
LSteph
...et si tu gardes la gestion de cette erreur, il ne faut pas la mettre
directement dans ta procèdure mais l'appeler au début et ainsi laisser le
exit sub avant fin:
qui ramènera à la procèdure appelante.
Si tu n'en tiens pas compte et que tu te trouve dans le contexte
précédemment évoqué cela va planter.

lSteph

"DC" a écrit dans le message de news:
43a4398a$0$29217$
Bonsoir à tous...............Bonsoir Patrick BASTARD et LSteph,

Merci de vos réponses positives, c'est parfait et çà fonctionne très bien,

J'ai opté pour la version de LSteph que j'ai un peu adaptée,
( malgrès mes lacunes en la matière )........ mais bon...!!
'--------------------------------------------------
On Error GoTo fin
With Cells(ActiveCell.Row, 1)
.End(xlDown).Offset(1, 0).Select
If Not IsEmpty(Selection.Cells(1)) Then
Selection.End(xlDown).Offset(1, 0).Select
End If
fin:
End With
'----------------------------------------------------
Je lai positionnée en début de ma procédure de macro et çà fonctionne à
merveille, comme je l'espérais...........Merci...!!

Salutation!...........un grand Merci...!!.........bon WE.......DC


"LSteph" a écrit dans le message de news:
%
Bonjour,
A noter qu'il faudra faire attention à la place qui reste en dessous pour
la suite...
donc tu peux appeler gauchebas au début de tamacro
La routine erreur est là pour: si on est déjà en 1ère colonne,et/ou
dernière ligne
ou que l'on ne soit pas dans un paragraphe, selon le cas on ira
soit à la cellule en dessous soit celle en dessous du prochain §

''''''''''''
Sub gauchebas()
On Error GoTo fin
With Cells(ActiveCell.Row, 1)
.End(xlDown).Offset(1, 0).Select
If Not IsEmpty(Selection.Cells(1)) Then
Selection.End(xlDown).Offset(1, 0).Select
End If
Exit Sub
fin:
.Offset(1, 0).Select
End With
End Sub
'''
Sub tamacro()
gauchebas
MsgBox "on y est"
'lasuite
End Sub

''''''''''''''
'lSteph

"DC" a écrit dans le message de news:
43a41c70$0$20179$
Bonjour à tous,...............Excel 2000 sur XP

Merci de me lire..........C'est sympa...!!....Bonne Journée...!!

Voilà, j'aimerais si c'est possible, par ex : dans un paragraphe de 20
lignes, si j'ai le curseur en 12ème ligne et sur la colonne G, disposer
d'un code, que je mettrais en tout début de macro, pour que le curseur
aille se positionner en colonne A et à la première cellule vide vers le
bas, avant l'éxécution de cette macro,

A savoir qu'en dessous, je peux avoir d'autres paragraphes, donc çà
complique un peut les choses, et je ne sais pas comment solutionner le
problème,.........Merci de me venir en aide...!!

Salutations!...........Merci d'avance........Bon WE...........DC













Avatar
DC
Bonjour à tous.................Bonjour LSteph,

Merci de suivre les choses..............Bonne Journée...!!

Effectivement, sur la dernière ligne çà ce plantait, j'ai donc repris toute
ta procédure, que je pense avoir comprise, après mult réflections, car une
macro qui appelle les autres, l'une après l'autre, c'est assez compliqué
pour un novice, mais c'est comme çà que l'on progresse.........enfin
bon...!!...........merci pour la leçon...!!

Salutations!.........un grand Merci...!!.........Bon Dimanche.....DC

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

...et si tu gardes la gestion de cette erreur, il ne faut pas la mettre
directement dans ta procèdure mais l'appeler au début et ainsi laisser le
exit sub avant fin:
qui ramènera à la procèdure appelante.
Si tu n'en tiens pas compte et que tu te trouve dans le contexte
précédemment évoqué cela va planter.

lSteph

"DC" a écrit dans le message de news:
43a4398a$0$29217$
Bonsoir à tous...............Bonsoir Patrick BASTARD et LSteph,

Merci de vos réponses positives, c'est parfait et çà fonctionne très
bien,

J'ai opté pour la version de LSteph que j'ai un peu adaptée,
( malgrès mes lacunes en la matière )........ mais bon...!!
'--------------------------------------------------
On Error GoTo fin
With Cells(ActiveCell.Row, 1)
.End(xlDown).Offset(1, 0).Select
If Not IsEmpty(Selection.Cells(1)) Then
Selection.End(xlDown).Offset(1, 0).Select
End If
fin:
End With
'----------------------------------------------------
Je lai positionnée en début de ma procédure de macro et çà fonctionne à
merveille, comme je l'espérais...........Merci...!!

Salutation!...........un grand Merci...!!.........bon WE.......DC


"LSteph" a écrit dans le message de news:
%
Bonjour,
A noter qu'il faudra faire attention à la place qui reste en dessous
pour la suite...
donc tu peux appeler gauchebas au début de tamacro
La routine erreur est là pour: si on est déjà en 1ère colonne,et/ou
dernière ligne
ou que l'on ne soit pas dans un paragraphe, selon le cas on ira
soit à la cellule en dessous soit celle en dessous du prochain §

''''''''''''
Sub gauchebas()
On Error GoTo fin
With Cells(ActiveCell.Row, 1)
.End(xlDown).Offset(1, 0).Select
If Not IsEmpty(Selection.Cells(1)) Then
Selection.End(xlDown).Offset(1, 0).Select
End If
Exit Sub
fin:
.Offset(1, 0).Select
End With
End Sub
'''
Sub tamacro()
gauchebas
MsgBox "on y est"
'lasuite
End Sub

''''''''''''''
'lSteph

"DC" a écrit dans le message de news:
43a41c70$0$20179$
Bonjour à tous,...............Excel 2000 sur XP

Merci de me lire..........C'est sympa...!!....Bonne Journée...!!

Voilà, j'aimerais si c'est possible, par ex : dans un paragraphe de 20
lignes, si j'ai le curseur en 12ème ligne et sur la colonne G, disposer
d'un code, que je mettrais en tout début de macro, pour que le curseur
aille se positionner en colonne A et à la première cellule vide vers le
bas, avant l'éxécution de cette macro,

A savoir qu'en dessous, je peux avoir d'autres paragraphes, donc çà
complique un peut les choses, et je ne sais pas comment solutionner le
problème,.........Merci de me venir en aide...!!

Salutations!...........Merci d'avance........Bon WE...........DC

















Avatar
Michel Gaboly
Bonjour DC,

Si dans tes paragraphes, la colonne A est TOUJOURS renseignée (date de l'opération par exemple).

Sub PremiereCelluleVideEnColA()
Dim Ref As Range
With ActiveCell
If IsEmpty(ActiveCell) And .Column = 1 Then Exit Sub
Cells(.CurrentRegion.Row + .CurrentRegion.Rows.Count, 1).Select
End With
End Sub


Voici comment cela se décompose :

If IsEmpty(ActiveCell) And .Column = 1 Then Exit Sub

permet de tester si on est déjà dans une cellule vide en colonne A.


CurrentRegion correspond au paragraphe : à partir de la cellule active, c'est un rectangle obtenu en s'arrêtant dans les
4 directions aux premières lignes (haut et bas) ou colonnes vides trouv ées (droite et gauche). Si dans une direction
quelconque aucune ligne (ou colonne) vide n'est trouvée, Current Region s'arrête à la limite correspondante de la
feuille (ligne 1 ou 65536, colonne A ou IV)

Pour voir en pratique à quoi cela correspond, pas besoin de VBA : Editi on/Atteindre (raccourci clavier F5, ou Cmd + T
(Mac) ou Ctrl + T (Win)) et bouton "Cellules...". Puis "Zone en cours". Profites-en pour examiner les autres options,
c'est très riche.

.Row(Plage) renvoie la ligne du coin supérieur gauche de Plage.

.Rows(Plage).Count renvoie le nombre de lignes de Plage.

Cells(NumLigne, NumColonne) correspond à la cellule ituée à la lign e et à la colonne indiquée.

.CurrentRegion.Row + .CurrentRegion.Rows.Count donne le numéro de la première ligne à partir de la fin du paragraphe :
par exemple pour un paragraphe de 20 lignes commençant en ligne 10 (de la ligne 10 à la ligne 29), on obtient 10 + 20,
soit 30.


Variante avec Offset au lieu de Cells:

Sub PremiereCelluleVideEnColABis()
Dim Ref As Range
With ActiveCell
If IsEmpty(ActiveCell) And .Column = 1 Then Exit Sub
.Offset(.CurrentRegion.Row + .CurrentRegion.Rows.Count - .Row, - .Column + 1).Select
End With
End Sub

Autre approche, si ton traitement alimente une plage en ajoutant 1 ou plu sieurs lignes :

Dans le document dans lequel les données doivent être reportées, av ant le premier report, tu crées un nom,
"RéceptionDonnées", par exemple, correspondant à l'emplacement où reporter le premier élément.

Dans le traitement :

With Range("RéceptionDonnées")
' Ton report de 1 ou plusieurs lignes
.Parent.Names.Add "RéceptionDonnées", .offset(i) ' i étant le nb de lignes reportées
End With

Dès lors, plus besoin de te préoccuper de la cellule active.

NB - .Parent.Names.Add crée un nom de niveau feuille, ce qui permet d'a voir des "RéceptionDonnées" indépendants sur
plusieurs pages du classeur.

Pour créer un nom de niveau classeur, a priori - intéressant, il aura it fallu écrire : .Parent.Parent.Names.Add

Voilà,


Bonjour à tous.................Bonjour LSteph,

Merci de suivre les choses..............Bonne Journée...!!

Effectivement, sur la dernière ligne çà ce plantait, j'ai donc re pris toute
ta procédure, que je pense avoir comprise, après mult réflections , car une
macro qui appelle les autres, l'une après l'autre, c'est assez compli qué
pour un novice, mais c'est comme çà que l'on progresse.........enfi n
bon...!!...........merci pour la leçon...!!

Salutations!.........un grand Merci...!!.........Bon Dimanche.....DC

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


...et si tu gardes la gestion de cette erreur, il ne faut pas la mettre
directement dans ta procèdure mais l'appeler au début et ainsi lai sser le
exit sub avant fin:
qui ramènera à la procèdure appelante.
Si tu n'en tiens pas compte et que tu te trouve dans le contexte
précédemment évoqué cela va planter.

lSteph

"DC" a écrit dans le message de news:
43a4398a$0$29217$

Bonsoir à tous...............Bonsoir Patrick BASTARD et LSteph,

Merci de vos réponses positives, c'est parfait et çà fonctionne très
bien,

J'ai opté pour la version de LSteph que j'ai un peu adaptée,
( malgrès mes lacunes en la matière )........ mais bon...!!
'--------------------------------------------------
On Error GoTo fin
With Cells(ActiveCell.Row, 1)
.End(xlDown).Offset(1, 0).Select
If Not IsEmpty(Selection.Cells(1)) Then
Selection.End(xlDown).Offset(1, 0).Select
End If
fin:
End With
'----------------------------------------------------
Je lai positionnée en début de ma procédure de macro et çà f onctionne à
merveille, comme je l'espérais...........Merci...!!

Salutation!...........un grand Merci...!!.........bon WE.......DC


"LSteph" a écrit dans le message de news:
%

Bonjour,
A noter qu'il faudra faire attention à la place qui reste en dessou s
pour la suite...
donc tu peux appeler gauchebas au début de tamacro
La routine erreur est là pour: si on est déjà en 1ère colonne ,et/ou
dernière ligne
ou que l'on ne soit pas dans un paragraphe, selon le cas on ira
soit à la cellule en dessous soit celle en dessous du prochain §

''''''''''''
Sub gauchebas()
On Error GoTo fin
With Cells(ActiveCell.Row, 1)
.End(xlDown).Offset(1, 0).Select
If Not IsEmpty(Selection.Cells(1)) Then
Selection.End(xlDown).Offset(1, 0).Select
End If
Exit Sub
fin:
.Offset(1, 0).Select
End With
End Sub
'''
Sub tamacro()
gauchebas
MsgBox "on y est"
'lasuite
End Sub

''''''''''''''
'lSteph

"DC" a écrit dans le message de news:
43a41c70$0$20179$

Bonjour à tous,...............Excel 2000 sur XP

Merci de me lire..........C'est sympa...!!....Bonne Journée...!!

Voilà, j'aimerais si c'est possible, par ex : dans un paragraphe d e 20
lignes, si j'ai le curseur en 12ème ligne et sur la colonne G, dis poser
d'un code, que je mettrais en tout début de macro, pour que le cur seur
aille se positionner en colonne A et à la première cellule vide vers le
bas, avant l'éxécution de cette macro,

A savoir qu'en dessous, je peux avoir d'autres paragraphes, donc ç à
complique un peut les choses, et je ne sais pas comment solutionner le
problème,.........Merci de me venir en aide...!!

Salutations!...........Merci d'avance........Bon WE...........DC
















--
Cordialement,

Michel Gaboly
www.gaboly.com





Avatar
DC
Bonjour à tous..........................Bonjour Michel Gaboly,

Merci de t'es réponses très très positives............c'est sympa...!!

C'est plus que parfait, çà fonctionne à merveille et du premier
coup,.........Merci pour toutes ces explications, un véritable cour, très
instructif et effectivement, la fonction atteindre (F5) + cellule + Zone en
cour, est parlante, ainsi que de la richesse, dans l'examen des autres
options,........................Merci pour tout...!!

Cordialement......un grand Merci...!!......Bonne Journée...!!...DC

"Michel Gaboly" a écrit dans le message de news:

Bonjour DC,

Si dans tes paragraphes, la colonne A est TOUJOURS renseignée (date de
l'opération par exemple).

Sub PremiereCelluleVideEnColA()
Dim Ref As Range
With ActiveCell
If IsEmpty(ActiveCell) And .Column = 1 Then Exit Sub
Cells(.CurrentRegion.Row + .CurrentRegion.Rows.Count, 1).Select
End With
End Sub


Voici comment cela se décompose :

If IsEmpty(ActiveCell) And .Column = 1 Then Exit Sub

permet de tester si on est déjà dans une cellule vide en colonne A.


CurrentRegion correspond au paragraphe : à partir de la cellule active,
c'est un rectangle obtenu en s'arrêtant dans les
4 directions aux premières lignes (haut et bas) ou colonnes vides trouvées
(droite et gauche). Si dans une direction
quelconque aucune ligne (ou colonne) vide n'est trouvée, Current Region
s'arrête à la limite correspondante de la
feuille (ligne 1 ou 65536, colonne A ou IV)

Pour voir en pratique à quoi cela correspond, pas besoin de VBA :
Edition/Atteindre (raccourci clavier F5, ou Cmd + T
(Mac) ou Ctrl + T (Win)) et bouton "Cellules...". Puis "Zone en cours".
Profites-en pour examiner les autres options,
c'est très riche.

.Row(Plage) renvoie la ligne du coin supérieur gauche de Plage.

.Rows(Plage).Count renvoie le nombre de lignes de Plage.

Cells(NumLigne, NumColonne) correspond à la cellule ituée à la ligne et à la
colonne indiquée.

.CurrentRegion.Row + .CurrentRegion.Rows.Count donne le numéro de la
première ligne à partir de la fin du paragraphe :
par exemple pour un paragraphe de 20 lignes commençant en ligne 10 (de la
ligne 10 à la ligne 29), on obtient 10 + 20,
soit 30.


Variante avec Offset au lieu de Cells:

Sub PremiereCelluleVideEnColABis()
Dim Ref As Range
With ActiveCell
If IsEmpty(ActiveCell) And .Column = 1 Then Exit Sub
.Offset(.CurrentRegion.Row + .CurrentRegion.Rows.Count -
.Row, -.Column + 1).Select
End With
End Sub

Autre approche, si ton traitement alimente une plage en ajoutant 1 ou
plusieurs lignes :

Dans le document dans lequel les données doivent être reportées, avant le
premier report, tu crées un nom,
"RéceptionDonnées", par exemple, correspondant à l'emplacement où reporter
le premier élément.

Dans le traitement :

With Range("RéceptionDonnées")
' Ton report de 1 ou plusieurs lignes
.Parent.Names.Add "RéceptionDonnées", .offset(i) ' i étant le nb de
lignes reportées
End With

Dès lors, plus besoin de te préoccuper de la cellule active.

NB - .Parent.Names.Add crée un nom de niveau feuille, ce qui permet d'avoir
des "RéceptionDonnées" indépendants sur
plusieurs pages du classeur.

Pour créer un nom de niveau classeur, a priori - intéressant, il aurait
fallu écrire : .Parent.Parent.Names.Add

Voilà,


Bonjour à tous.................Bonjour LSteph,

Merci de suivre les choses..............Bonne Journée...!!

Effectivement, sur la dernière ligne çà ce plantait, j'ai donc repris
toute ta procédure, que je pense avoir comprise, après mult réflections,
car une macro qui appelle les autres, l'une après l'autre, c'est assez
compliqué pour un novice, mais c'est comme çà que l'on
progresse.........enfin bon...!!...........merci pour la leçon...!!

Salutations!.........un grand Merci...!!.........Bon Dimanche.....DC

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


...et si tu gardes la gestion de cette erreur, il ne faut pas la mettre
directement dans ta procèdure mais l'appeler au début et ainsi laisser le
exit sub avant fin:
qui ramènera à la procèdure appelante.
Si tu n'en tiens pas compte et que tu te trouve dans le contexte
précédemment évoqué cela va planter.

lSteph

"DC" a écrit dans le message de news:
43a4398a$0$29217$

Bonsoir à tous...............Bonsoir Patrick BASTARD et LSteph,

Merci de vos réponses positives, c'est parfait et çà fonctionne très
bien,

J'ai opté pour la version de LSteph que j'ai un peu adaptée,
( malgrès mes lacunes en la matière )........ mais bon...!!
'--------------------------------------------------
On Error GoTo fin
With Cells(ActiveCell.Row, 1)
.End(xlDown).Offset(1, 0).Select
If Not IsEmpty(Selection.Cells(1)) Then
Selection.End(xlDown).Offset(1, 0).Select
End If
fin:
End With
'----------------------------------------------------
Je lai positionnée en début de ma procédure de macro et çà fonctionne à
merveille, comme je l'espérais...........Merci...!!

Salutation!...........un grand Merci...!!.........bon WE.......DC


"LSteph" a écrit dans le message de news:
%

Bonjour,
A noter qu'il faudra faire attention à la place qui reste en dessous
pour la suite...
donc tu peux appeler gauchebas au début de tamacro
La routine erreur est là pour: si on est déjà en 1ère colonne,et/ou
dernière ligne
ou que l'on ne soit pas dans un paragraphe, selon le cas on ira
soit à la cellule en dessous soit celle en dessous du prochain §

''''''''''''
Sub gauchebas()
On Error GoTo fin
With Cells(ActiveCell.Row, 1)
.End(xlDown).Offset(1, 0).Select
If Not IsEmpty(Selection.Cells(1)) Then
Selection.End(xlDown).Offset(1, 0).Select
End If
Exit Sub
fin:
.Offset(1, 0).Select
End With
End Sub
'''
Sub tamacro()
gauchebas
MsgBox "on y est"
'lasuite
End Sub

''''''''''''''
'lSteph

"DC" a écrit dans le message de news:
43a41c70$0$20179$

Bonjour à tous,...............Excel 2000 sur XP

Merci de me lire..........C'est sympa...!!....Bonne Journée...!!

Voilà, j'aimerais si c'est possible, par ex : dans un paragraphe de 20
lignes, si j'ai le curseur en 12ème ligne et sur la colonne G, disposer
d'un code, que je mettrais en tout début de macro, pour que le curseur
aille se positionner en colonne A et à la première cellule vide vers le
bas, avant l'éxécution de cette macro,

A savoir qu'en dessous, je peux avoir d'autres paragraphes, donc çà
complique un peut les choses, et je ne sais pas comment solutionner le
problème,.........Merci de me venir en aide...!!

Salutations!...........Merci d'avance........Bon WE...........DC
















--
Cordialement,

Michel Gaboly
www.gaboly.com





Avatar
Michel Gaboly
Merci DC,

Tu veux me faire rougir, avec cette avalanche de compliments ? ;-))))

Bonjour à tous..........................Bonjour Michel Gaboly,

Merci de t'es réponses très très positives............c'est sympa ...!!

C'est plus que parfait, çà fonctionne à merveille et du premier
coup,.........Merci pour toutes ces explications, un véritable cour, très
instructif et effectivement, la fonction atteindre (F5) + cellule + Zon e en
cour, est parlante, ainsi que de la richesse, dans l'examen des autres
options,........................Merci pour tout...!!

Cordialement......un grand Merci...!!......Bonne Journée...!!...DC

"Michel Gaboly" a écrit dans le message de news:

Bonjour DC,

Si dans tes paragraphes, la colonne A est TOUJOURS renseignée (date d e
l'opération par exemple).

Sub PremiereCelluleVideEnColA()
Dim Ref As Range
With ActiveCell
If IsEmpty(ActiveCell) And .Column = 1 Then Exit Sub
Cells(.CurrentRegion.Row + .CurrentRegion.Rows.Count, 1).Selec t
End With
End Sub


Voici comment cela se décompose :

If IsEmpty(ActiveCell) And .Column = 1 Then Exit Sub

permet de tester si on est déjà dans une cellule vide en colonne A.


CurrentRegion correspond au paragraphe : à partir de la cellule activ e,
c'est un rectangle obtenu en s'arrêtant dans les
4 directions aux premières lignes (haut et bas) ou colonnes vides tro uvées
(droite et gauche). Si dans une direction
quelconque aucune ligne (ou colonne) vide n'est trouvée, Current Regi on
s'arrête à la limite correspondante de la
feuille (ligne 1 ou 65536, colonne A ou IV)

Pour voir en pratique à quoi cela correspond, pas besoin de VBA :
Edition/Atteindre (raccourci clavier F5, ou Cmd + T
(Mac) ou Ctrl + T (Win)) et bouton "Cellules...". Puis "Zone en cours" .
Profites-en pour examiner les autres options,
c'est très riche.

.Row(Plage) renvoie la ligne du coin supérieur gauche de Plage.

.Rows(Plage).Count renvoie le nombre de lignes de Plage.

Cells(NumLigne, NumColonne) correspond à la cellule ituée à la li gne et à la
colonne indiquée.

.CurrentRegion.Row + .CurrentRegion.Rows.Count donne le numéro de la
première ligne à partir de la fin du paragraphe :
par exemple pour un paragraphe de 20 lignes commençant en ligne 10 (d e la
ligne 10 à la ligne 29), on obtient 10 + 20,
soit 30.


Variante avec Offset au lieu de Cells:

Sub PremiereCelluleVideEnColABis()
Dim Ref As Range
With ActiveCell
If IsEmpty(ActiveCell) And .Column = 1 Then Exit Sub
.Offset(.CurrentRegion.Row + .CurrentRegion.Rows.Count -
.Row, -.Column + 1).Select
End With
End Sub

Autre approche, si ton traitement alimente une plage en ajoutant 1 ou
plusieurs lignes :

Dans le document dans lequel les données doivent être reportées, avant le
premier report, tu crées un nom,
"RéceptionDonnées", par exemple, correspondant à l'emplacement où reporter
le premier élément.

Dans le traitement :

With Range("RéceptionDonnées")
' Ton report de 1 ou plusieurs lignes
.Parent.Names.Add "RéceptionDonnées", .offset(i) ' i étant le nb de
lignes reportées
End With

Dès lors, plus besoin de te préoccuper de la cellule active.

NB - .Parent.Names.Add crée un nom de niveau feuille, ce qui permet d 'avoir
des "RéceptionDonnées" indépendants sur
plusieurs pages du classeur.

Pour créer un nom de niveau classeur, a priori - intéressant, il au rait
fallu écrire : .Parent.Parent.Names.Add

Voilà,



Bonjour à tous.................Bonjour LSteph,

Merci de suivre les choses..............Bonne Journée...!!

Effectivement, sur la dernière ligne çà ce plantait, j'ai donc re pris
toute ta procédure, que je pense avoir comprise, après mult réfle ctions,
car une macro qui appelle les autres, l'une après l'autre, c'est asse z
compliqué pour un novice, mais c'est comme çà que l'on
progresse.........enfin bon...!!...........merci pour la leçon...!!

Salutations!.........un grand Merci...!!.........Bon Dimanche.....DC

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



...et si tu gardes la gestion de cette erreur, il ne faut pas la mettr e
directement dans ta procèdure mais l'appeler au début et ainsi la isser le
exit sub avant fin:
qui ramènera à la procèdure appelante.
Si tu n'en tiens pas compte et que tu te trouve dans le contexte
précédemment évoqué cela va planter.

lSteph

"DC" a écrit dans le message de news:
43a4398a$0$29217$


Bonsoir à tous...............Bonsoir Patrick BASTARD et LSteph,

Merci de vos réponses positives, c'est parfait et çà fonctionne très
bien,

J'ai opté pour la version de LSteph que j'ai un peu adaptée,
( malgrès mes lacunes en la matière )........ mais bon...!!
'--------------------------------------------------
On Error GoTo fin
With Cells(ActiveCell.Row, 1)
.End(xlDown).Offset(1, 0).Select
If Not IsEmpty(Selection.Cells(1)) Then
Selection.End(xlDown).Offset(1, 0).Select
End If
fin:
End With
'----------------------------------------------------
Je lai positionnée en début de ma procédure de macro et çà fonctionne à
merveille, comme je l'espérais...........Merci...!!

Salutation!...........un grand Merci...!!.........bon WE.......DC


"LSteph" a écrit dans le message de news:
%


Bonjour,
A noter qu'il faudra faire attention à la place qui reste en desso us
pour la suite...
donc tu peux appeler gauchebas au début de tamacro
La routine erreur est là pour: si on est déjà en 1ère colonn e,et/ou
dernière ligne
ou que l'on ne soit pas dans un paragraphe, selon le cas on ira
soit à la cellule en dessous soit celle en dessous du prochain §

''''''''''''
Sub gauchebas()
On Error GoTo fin
With Cells(ActiveCell.Row, 1)
.End(xlDown).Offset(1, 0).Select
If Not IsEmpty(Selection.Cells(1)) Then
Selection.End(xlDown).Offset(1, 0).Select
End If
Exit Sub
fin:
.Offset(1, 0).Select
End With
End Sub
'''
Sub tamacro()
gauchebas
MsgBox "on y est"
'lasuite
End Sub

''''''''''''''
'lSteph

"DC" a écrit dans le message de news:
43a41c70$0$20179$


Bonjour à tous,...............Excel 2000 sur XP

Merci de me lire..........C'est sympa...!!....Bonne Journée...!!

Voilà, j'aimerais si c'est possible, par ex : dans un paragraphe de 20
lignes, si j'ai le curseur en 12ème ligne et sur la colonne G, di sposer
d'un code, que je mettrais en tout début de macro, pour que le cu rseur
aille se positionner en colonne A et à la première cellule vide vers le
bas, avant l'éxécution de cette macro,

A savoir qu'en dessous, je peux avoir d'autres paragraphes, donc ç à
complique un peut les choses, et je ne sais pas comment solutionner le
problème,.........Merci de me venir en aide...!!

Salutations!...........Merci d'avance........Bon WE...........DC
















--
Cordialement,

Michel Gaboly
www.gaboly.com