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

Copie cellule précedente VBA

10 réponses
Avatar
François
Bonjour =E0 tous,

Je s=E8che sur un "petit" probl=E8me.
L'=E9nonc=E9 : j'ai un fichier avec des donn=E9es en colonne A,=20
et j'aimerai que excel copie la cellule, si la ou les=20
cellules suivantes sont vides, jusqu'=E0 trouver une=20
nouvelle donn=E9e dans la plage A1:Ax
exemple :
A1 : 1
A2 : vide
A3 : 2
A4 : 3
A5 : vide ...
R=E9sultat :
A1 : 1
A2 : 1
A3 : 2
A4 : 3
Il se peut qu'il y ait plus qu'une cellule vide (copie=20
multiple)

Merci pour votre aide,

Cordialement,

Fran=E7ois

10 réponses

Avatar
Nicolas B.
Salut François,

En reprenant ton exemple, tu mets en B1 : ¡, puis en B2 et à étirer
vers le bas :
=SI(A2="";B1;A2)

Tu peux ensuite faire un copier coller spécial Valeurs pour écrire les
résultats des formules en dur.


A+
Nicolas B.


François wrote:
Bonjour à tous,

Je sèche sur un "petit" problème.
L'énoncé : j'ai un fichier avec des données en colonne A,
et j'aimerai que excel copie la cellule, si la ou les
cellules suivantes sont vides, jusqu'à trouver une
nouvelle donnée dans la plage A1:Ax
exemple :
A1 : 1
A2 : vide
A3 : 2
A4 : 3
A5 : vide ...
Résultat :
A1 : 1
A2 : 1
A3 : 2
A4 : 3
Il se peut qu'il y ait plus qu'une cellule vide (copie
multiple)

Merci pour votre aide,

Cordialement,

François


Avatar
François
Salut Nicolas B.

J'avais exploré cette piste, mais malheureusement, elle ne
fonctionne pas si j'ai plusieurs cellules vides !
Exemple :
A1 : 1
A2 : vide
A3 : vide
A4 : 2
Là, la formule me retourne une cellule vide en A3.

De plus, si tu as une idée en VBA, car derrière j'ai
d'autre macros... Mais bon !

Merci pour tes pistes, je reste preneur d'une autre
solution.

Bien cordialement,

François

-----Message d'origine-----
Salut François,

En reprenant ton exemple, tu mets en B1 : ¡, puis en B2
et à étirer

vers le bas :
=SI(A2="";B1;A2)

Tu peux ensuite faire un copier coller spécial Valeurs
pour écrire les

résultats des formules en dur.


A+
Nicolas B.


François wrote:
Bonjour à tous,

Je sèche sur un "petit" problème.
L'énoncé : j'ai un fichier avec des données en colonne
A,


et j'aimerai que excel copie la cellule, si la ou les
cellules suivantes sont vides, jusqu'à trouver une
nouvelle donnée dans la plage A1:Ax
exemple :
A1 : 1
A2 : vide
A3 : 2
A4 : 3
A5 : vide ...
Résultat :
A1 : 1
A2 : 1
A3 : 2
A4 : 3
Il se peut qu'il y ait plus qu'une cellule vide (copie
multiple)

Merci pour votre aide,

Cordialement,

François
.





Avatar
J-Dan
bonjour François,

en VBA, tu peux essayer ceci :

On Error Resume Next
Range(Range("A1"), Range("A65536").End(xlUp)).Select
For Each c In Selection
If c = "" Then c.Value = c.Offset(-1, 0)
Next

J-Dan

-----Message d'origine-----
Salut Nicolas B.

J'avais exploré cette piste, mais malheureusement, elle
ne

fonctionne pas si j'ai plusieurs cellules vides !
Exemple :
A1 : 1
A2 : vide
A3 : vide
A4 : 2
Là, la formule me retourne une cellule vide en A3.

De plus, si tu as une idée en VBA, car derrière j'ai
d'autre macros... Mais bon !

Merci pour tes pistes, je reste preneur d'une autre
solution.

Bien cordialement,

François

-----Message d'origine-----
Salut François,

En reprenant ton exemple, tu mets en B1 : ¡, puis en
B2


et à étirer
vers le bas :
=SI(A2="";B1;A2)

Tu peux ensuite faire un copier coller spécial Valeurs
pour écrire les

résultats des formules en dur.


A+
Nicolas B.


François wrote:
Bonjour à tous,

Je sèche sur un "petit" problème.
L'énoncé : j'ai un fichier avec des données en
colonne



A,
et j'aimerai que excel copie la cellule, si la ou les
cellules suivantes sont vides, jusqu'à trouver une
nouvelle donnée dans la plage A1:Ax
exemple :
A1 : 1
A2 : vide
A3 : 2
A4 : 3
A5 : vide ...
Résultat :
A1 : 1
A2 : 1
A3 : 2
A4 : 3
Il se peut qu'il y ait plus qu'une cellule vide
(copie



multiple)

Merci pour votre aide,

Cordialement,

François
.


.






Avatar
Nicolas B.
J'avais exploré cette piste, mais malheureusement, elle ne
fonctionne pas si j'ai plusieurs cellules vides !


Ben si ça marche :

Dans ton exemple, je suis en B2, la formule est : =SI(A2="";B1;A2).
A2 est vide donc ça affiche la valeur B1 (et en B1 il y a la formule
¡) c'est-à-dire 1.

Je suis maintenant en B3. On a donc =SI(A3="";B2;A3).
A3 est vide, tout comme A2. On recopie donc la valeur en B2 soit 1.

Et ça continue comme ça...


A+
Nicolas B.


François wrote:
Salut Nicolas B.

J'avais exploré cette piste, mais malheureusement, elle ne
fonctionne pas si j'ai plusieurs cellules vides !
Exemple :
A1 : 1
A2 : vide
A3 : vide
A4 : 2
Là, la formule me retourne une cellule vide en A3.

De plus, si tu as une idée en VBA, car derrière j'ai
d'autre macros... Mais bon !

Merci pour tes pistes, je reste preneur d'une autre
solution.

Bien cordialement,

François


-----Message d'origine-----
Salut François,

En reprenant ton exemple, tu mets en B1 : ¡, puis en B2


et à étirer

vers le bas :
=SI(A2="";B1;A2)

Tu peux ensuite faire un copier coller spécial Valeurs


pour écrire les

résultats des formules en dur.


A+
Nicolas B.




Avatar
Michel Gaboly
Bonsoir,

Voici une solution en VBA :

Sub Recopie()
Dim c As Range, NumLigne As Long
' c correspond à la premère cellule non vode vers la bas
' en partant de A1. Si c est en ligne 2, il n'y a aucune
' cellule vide après A1, toujours vers le bas
Set c = Range("A1").End(xlDown)
NumLigne = c.Row - 1
If NumLigne <> 1 Then
Range(Range("A1"), Range("A" & NumLigne)).Select
Range(Range("A1"), Range("A" & NumLigne)) = Range("A1")
End If
End Sub

On peut bien sur affiner en remplaçant A1 par ActiveCell ou par le
résultat d'un choix, et faire un test pour éviter de recopier la valeur
jusqu'en ligne 65536 si toutes les cellules en-dessous de la cellule de
`référence sont vides.

Par exemple :

Sub Recopie()
Dim c As Range, NumLigne As Long
' c correspond à la première cellule non vide vers la bas
' en partant de A1. Si c est en ligne 2, il n'y a aucune
' cellule vide après A1, toujours vers le bas
' NB - si toutes les cellules sont vides en-dessous de la
' cellule active, c correspond à la ligne 65536.
Set c = Range("A1").End(xlDown)
NumLigne = c.Row - 1
If NumLigne <> 1 Then
MsgBox ActiveSheet.UsedRange.Rows.Count
' Adaptation de NumLigne si au-delà de la zone utilisée
' dans la feuille (par exemple 65 536 alors que seules les
' cellules A1 à F100 sont utilisées.
NumLigne = Application.WorksheetFunction.Min(NumLigne, ActiveSheet.UsedRange.Rows.Count)
Range(Range("A1"), Range("A" & NumLigne)).Select
Range(Range("A1"), Range("A" & NumLigne)) = Range("A1")
End If
End Sub



Bonjour à tous,

Je sèche sur un "petit" problème.
L'énoncé : j'ai un fichier avec des données en colonne A,
et j'aimerai que excel copie la cellule, si la ou les
cellules suivantes sont vides, jusqu'à trouver une
nouvelle donnée dans la plage A1:Ax
exemple :
A1 : 1
A2 : vide
A3 : 2
A4 : 3
A5 : vide ...
Résultat :
A1 : 1
A2 : 1
A3 : 2
A4 : 3
Il se peut qu'il y ait plus qu'une cellule vide (copie
multiple)

Merci pour votre aide,

Cordialement,

François


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
François
Parfait !!!

Merci encore pour votre aide et longue vie au forum !


-----Message d'origine-----
Salut Nicolas B.

J'avais exploré cette piste, mais malheureusement, elle
ne

fonctionne pas si j'ai plusieurs cellules vides !
Exemple :
A1 : 1
A2 : vide
A3 : vide
A4 : 2
Là, la formule me retourne une cellule vide en A3.

De plus, si tu as une idée en VBA, car derrière j'ai
d'autre macros... Mais bon !

Merci pour tes pistes, je reste preneur d'une autre
solution.

Bien cordialement,

François

-----Message d'origine-----
Salut François,

En reprenant ton exemple, tu mets en B1 : ¡, puis en
B2


et à étirer
vers le bas :
=SI(A2="";B1;A2)

Tu peux ensuite faire un copier coller spécial Valeurs
pour écrire les

résultats des formules en dur.


A+
Nicolas B.


François wrote:
Bonjour à tous,

Je sèche sur un "petit" problème.
L'énoncé : j'ai un fichier avec des données en colonne
A,


et j'aimerai que excel copie la cellule, si la ou les
cellules suivantes sont vides, jusqu'à trouver une
nouvelle donnée dans la plage A1:Ax
exemple :
A1 : 1
A2 : vide
A3 : 2
A4 : 3
A5 : vide ...
Résultat :
A1 : 1
A2 : 1
A3 : 2
A4 : 3
Il se peut qu'il y ait plus qu'une cellule vide (copie
multiple)

Merci pour votre aide,

Cordialement,

François
.


.






Avatar
François
Merci Michel pour ces précisions.

Bien cordialement,

François
-----Message d'origine-----
Bonsoir,

Voici une solution en VBA :

Sub Recopie()
Dim c As Range, NumLigne As Long
' c correspond à la premère cellule non vode vers la
bas

' en partant de A1. Si c est en ligne 2, il n'y a
aucune

' cellule vide après A1, toujours vers le bas
Set c = Range("A1").End(xlDown)
NumLigne = c.Row - 1
If NumLigne <> 1 Then
Range(Range("A1"), Range("A" &
NumLigne)).Select

Range(Range("A1"), Range("A" & NumLigne))
= Range("A1")

End If
End Sub

On peut bien sur affiner en remplaçant A1 par ActiveCell
ou par le

résultat d'un choix, et faire un test pour éviter de
recopier la valeur

jusqu'en ligne 65536 si toutes les cellules en-dessous de
la cellule de

`référence sont vides.

Par exemple :

Sub Recopie()
Dim c As Range, NumLigne As Long
' c correspond à la première cellule non vide vers la
bas

' en partant de A1. Si c est en ligne 2, il n'y a
aucune

' cellule vide après A1, toujours vers le bas
' NB - si toutes les cellules sont vides en-dessous
de la

' cellule active, c correspond à la ligne 65536.
Set c = Range("A1").End(xlDown)
NumLigne = c.Row - 1
If NumLigne <> 1 Then
MsgBox ActiveSheet.UsedRange.Rows.Count
' Adaptation de NumLigne si au-delà de la
zone utilisée

' dans la feuille (par exemple 65 536
alors que seules les

' cellules A1 à F100 sont utilisées.
NumLigne =
Application.WorksheetFunction.Min(NumLigne,

ActiveSheet.UsedRange.Rows.Count)
Range(Range("A1"), Range("A" &
NumLigne)).Select

Range(Range("A1"), Range("A" & NumLigne))
= Range("A1")

End If
End Sub



Bonjour à tous,

Je sèche sur un "petit" problème.
L'énoncé : j'ai un fichier avec des données en colonne
A,


et j'aimerai que excel copie la cellule, si la ou les
cellules suivantes sont vides, jusqu'à trouver une
nouvelle donnée dans la plage A1:Ax
exemple :
A1 : 1
A2 : vide
A3 : 2
A4 : 3
A5 : vide ...
Résultat :
A1 : 1
A2 : 1
A3 : 2
A4 : 3
Il se peut qu'il y ait plus qu'une cellule vide (copie
multiple)

Merci pour votre aide,

Cordialement,

François


--
Cordialement,

Michel Gaboly
http://www.gaboly.com


.




Avatar
sabatier
l'essentiel restant de ne pas se tromper dans la rédaction du cide....
jps (qui va sûrement faire un bode sur ce coup)

"Michel Gaboly" a écrit dans le message de
news:
' c correspond à la premère cellule non vode vers la bas


Avatar
Michel Gaboly
M'enfin :-)))

Les fautes de frappe dans les commentaires ne sont pas tout de
même pas si graves ;-)))

Quant au "cide", avec mes origines antillaises, j'ai bien compris
que tu voulais dire "cidre", ce qui semble pour le moins inat-
tendu de ta part. ;-)))))))



l'essentiel restant de ne pas se tromper dans la rédaction du cide....
jps (qui va sûrement faire un bode sur ce coup)

"Michel Gaboly" a écrit dans le message de
news:
' c correspond à la premère cellule non vode vers la bas



--
Cordialement,

Michel Gaboly
http://www.gaboly.com


Avatar
jps
:-))))))))))))))))))))
jps

"Michel Gaboly" a écrit dans le message de
news:
M'enfin :-)))

Les fautes de frappe dans les commentaires ne sont pas tout de
même pas si graves ;-)))

Quant au "cide", avec mes origines antillaises, j'ai bien compris
que tu voulais dire "cidre", ce qui semble pour le moins inat-
tendu de ta part. ;-)))))))



l'essentiel restant de ne pas se tromper dans la rédaction du cide....
jps (qui va sûrement faire un bode sur ce coup)

"Michel Gaboly" a écrit dans le message de
news:
' c correspond à la premère cellule non vode vers la bas



--
Cordialement,

Michel Gaboly
http://www.gaboly.com