XL 2016 Macro : Etirer cellule vers le bas

Laurentb974

XLDnaute Nouveau
Bonjour à tous,
Chaque jour, j'édite une feuille excel que je compare avec la veille. J'ai donc de nouvelles lignes qui apparaissent en plus chaque jour.
Sur la colonne A apparaît le nom de la classe. 301, des cases vides puis 302 ( je mets le fichier en PJ ).
Je voudrais essayer une macro qui réalise la chose suivante ( je suis désolé, je débute avec Excel ) : à chaque fois que tu rencontre une donnée, étire cette donnée jusque la prochaine donnée.
Est-ce que cela vous paraît possible ?
Je vous remercie.
Bien à vous,
Laurent
 

Pièces jointes

  • Classeur5.xlsx
    26.6 KB · Affichages: 30

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Laurent, bonjour le forum,
Peut-être comme ça :

VB:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Worksheets("Feuil1") 'définit l'onglet O
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row - 1 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
TV = O.Range("A2:A" & DL) 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucles sur toutes les lignes du tableau des valeurs TV
  If TV(I, 1) = "" Then TV(I, 1) = TV(I - 1, 1)
Next I 'prochaine ligne de la boucle
'renvoie dans F5 redimensionnée de l'onglet O le tableau TL transposé
O.Range("A2").Resize(DL - 1, 1).Value = TV
End Sub[\code]
 

chris

XLDnaute Barbatruc
Bonjour
Salut à Robert ;)

On peut aussi faire via la touche F5 :
  • sélectionner la première colonne du tableau
  • F5, cellules, cellules vides
  • Taper =A24 dans la barre de formule et valider par CTRL Entrée,
  • puis CTRL C et collage spécial valeur
 

Laurentb974

XLDnaute Nouveau
Impressionnant !...
J'ai essayé et j'ai obtenu ça :

upload_2018-10-16_16-4-28.png


Merci de votre aide
 

Laurentb974

XLDnaute Nouveau
Bonjour Chris,
Je n'ai pas réussi à réaliser ce que tu proposes.
Est-ce que "=A24" signifie qu'il va remplir les cases vides par la valeur de la A24 ?
Parce que je ne cherche pas tout à fait cela. Il est possible qu'il doive insérer la valeur A24 jusque A39 puis une autre valeur en A40 qui devra continuer jusque A67 par exemple, etc.
Merci ;-)
 

Robert

XLDnaute Barbatruc
Repose en paix
re,

VB:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Worksheets("Feuil1") 'définit l'onglet O
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row - 1 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
TV = O.Range("A2:A" & DL) 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucles sur toutes les lignes du tableau des valeurs TV
  If TV(I, 1) = "" Then TV(I, 1) = TV(I - 1, 1)
Next I 'prochaine ligne de la boucle
'renvoie dans F5 redimensionnée de l'onglet O le tableau TL transposé
O.Range("A2").Resize(DL - 1, 1).Value = TV
End Sub
 

chris

XLDnaute Barbatruc
re
Bonjour Chris,
Je n'ai pas réussi à réaliser ce que tu proposes.
Est-ce que "=A24" signifie qu'il va remplir les cases vides par la valeur de la A24 ?
Parce que je ne cherche pas tout à fait cela. Il est possible qu'il doive insérer la valeur A24 jusque A39 puis une autre valeur en A40 qui devra continuer jusque A67 par exemple, etc.
Merci ;-)
Non dans ton exemple la première cellule à remplir est A25 donc cela dit "si c'est vide (puisque F5 a sélectionner les vides, prendre la cellule d'au-dessus" : c'est donc dynamique car A25 contient A24 mais A26 contient A25 et quand il arrive à A40 il prend donc A39

C'est de la simple logique de calcul Excel : il n'y a pas de $ dans la formule donc ce n'est pas une adresse absolue ($A$24) mais bien relative A24...

Si tu n'as pas réussi, c'est que tu as mal effectué une des étapes décrites...
 

Laurentb974

XLDnaute Nouveau
Waou ! Ah oui quand même !
Je n'ai même pas le temps de terminer autre chose que vous avez déjà répondu !!!
La solution de Robert fonctionne, c'est magique ! ;-).
Elle est évidemment un peu obscure pour mon niveau, mais je trouve ça inspirant !
Je n'ai pas encore essayé la solution de Chris. Je vais m'y pencher pour essayer de comprendre ce qu'il ne va pas.
Merci beaucoup !
Laurent
 

Discussions similaires