Formule ,macro??
Résolu
xav37300
Messages postés
52
Statut
Membre
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'aurais besoin de votre aide afin de gagner du tps sur un fichier. En effet,je voudrais automatiser une donnée afin que celle ci s'ajoute directement.
Je vous fais suivre le fichier afin que cela soit plus explicite (il s'agit juste d'une partie )
https://www.cjoint.com/?DACrQW9f0pK
Merci de votre aide
J'aurais besoin de votre aide afin de gagner du tps sur un fichier. En effet,je voudrais automatiser une donnée afin que celle ci s'ajoute directement.
Je vous fais suivre le fichier afin que cela soit plus explicite (il s'agit juste d'une partie )
https://www.cjoint.com/?DACrQW9f0pK
Merci de votre aide
2 réponses
-
Bonjour,
une possibilité :Sub completeCol() Dim c As Range For Each c In Selection If c = "" Then c = c.Offset(-1) Next c End Sub
Sélectionner la plage à compléter et lancer la macro.
eric
-
-
Oui c'est possible, en supposant que ton tableau démarre en ligne 7 :
Sub completeCol()
Je me base sur la colonne Date pour détecter la dernière ligne. Elle est sensée être remplie jusqu'au bout.
Dim c As Range
Application.ScreenUpdating = False
For Each c In [A7].Resize(Cells(Rows.Count, 2).End(xlUp).Row - 6)
If c = "" Then c = c.Offset(-1)
Next c
End Sub
Si tu as beaucoup de lignes (plusieurs milliers) et que c'est à faire régulièrement on peut faire plus rapide.
eric -
-
Bonjour,
combien de lignes as-tu ?
Sur mon micro, qui n'est pas récent, ça prend 1.2s pour 6500 lignes, pas le temps de prendre un café...
Mais bon, on va dire que c'est pour l'exercice :Sub completeCol()
Toujours pour 6500 lignes on passe à 0.055s (x22)
Dim t As Single
Dim derlig As Long, lig As Long, data As Variant
't = Timer
Application.ScreenUpdating = False
derlig = Cells(Rows.Count, 2).End(xlUp).Row
data = [A7].Resize(derlig - 6, 1)
For lig = 1 To UBound(data)
If data(lig, 1) = "" Then data(lig, 1) = data(lig - 1, 1)
Next lig
[A7].Resize(UBound(data), UBound(data, 2)) = data
Application.ScreenUpdating = True
'MsgBox Timer - t
End Sub
eric -
-
-
Bonjour
Avec une formule en E7 mettre ceci et la tirer vers le bas avec la poignée de recopie
=SI(A7>0;A7;A6)