Boucle recherche cellule et incrémentation

Bonjour tout le monde

Premiers pas sur un forum pour moi

Mes connaissances en VBA sont très légères

merci de votre indulgence

Je travaille sur un fichier de plusieurs milliers de lignes et de centaines de colonne

J'ai commencé une macro de traitement mais je suis bloqué car je ne sais pas utiliser les boucles

Voici mon problème:

Dans la colonne "A" Certaines cellules contiennent une valeur numérique : "1", "2", "3",etc, ..., jusqu' a l' infini (toujours en ordre croissant).

Je souhaiterai intégrer a ma macro un code VBA qui me permettrait :

1) d'atteindre la première cellule non vide (obligatoirement valeur; "1")

2)de recopier cette valeur "1" dans toutes les cellules vides se trouvant dessous jusqu'à atteindre la prochaine cellule non vide (obligatoirement "2") et ainsi de suite jusqu' à la dernière cellule non vide ( valeur aléatoire suivant la taille du fichier).

Voila j'espère avoir été suffisamment clair et qu'un de vous pourra m'aider

D'avance merci

Bonsoir

Une méthode sans macro

Plus longue à écrire qu'à faire

Sélectionnes la colonne A (le mieux du premier 1 jusqu'au dernier nombre)

Appuies sur F5

Appuies sur cellules ... (en bas à gauche)

Dans les options choisis "cellules vides"

Appuies sur "Ok"

Tu vas obtenir la colonne A dans laquelle toutes les cellules vides sont sélectionnées

Tu regardes dans la zone nom (en haut des lignes et à gauche des colonne, c'est à dire coin haut gauche de la feuille de calcul)

Cette zone indique la 1ère cellule sélectionnée

Tu tapes la formule suivante (si dans la zone nom il est noté A3)

=A2

Si dans la zone nom il est noté A8

=A7

ensuite tu appuies sur Ctrl (touche control) + sur la touche Entrée

C'est presque fini

Tu sélectionnes la colonne A

Copier/Collage spécial ---> valeur sur la colonne A

C'est fini

Bonjour

et avec 4 lignes de code

Sub Completer()
Dim MaCellule As Object
Range("A2:A" & [A65000].End(xlUp).Row).Select
For Each MaCellule In Selection
If MaCellule = Empty Then MaCellule.Value = MaCellule.Offset(-1, 0).Value
  Next MaCellule
End Sub

Cordialement

222remplir-vides.zip (7.22 Ko)

Bonsoir,

Une proposition analogue.

Cdlt.

146caswana.xlsm (19.67 Ko)
Option Explicit
Public Sub Traitement()
Dim Ws As Worksheet
Dim derLigne As Long, i As Long
    Application.ScreenUpdating = False
    Set Ws = Worksheets("Feuil1")
    With Ws
        derLigne = .Range("A" & Rows.Count).End(xlUp).Row
        For i = 2 To derLigne
            If IsEmpty(.Cells(i, 1)) Then .Cells(i, 1) = .Cells(i - 1, 1)
        Next
    End With
    Set Ws = Nothing
End Sub

Merci beaucoup pour la rapidité de vos réponses

Je retiens la première solution après l'avoir enregistrée en VBA pour l'intégrer dans ma macro

Ca fonctionne à merveille.

Petit souci avec la deuxième solution : Le code s'arrête sur la dernière valeur trouvée sans l'incrémenter jusqu'au bas du fichier.

Quand à la troisième je viens juste de la voir et ne l'ai pas testé

Pour une première sur un forum je suis très satisfait du résultat

Encore merci à tous les trois

Bonjour

Petit souci avec la deuxième solution : Le code s'arrête sur la dernière valeur trouvée sans l'incrémenter jusqu'au bas du fichier

Je croyais savoir bien lire...Petit rappel de ton énoncé.

jusqu'à atteindre la prochaine cellule non vide (obligatoirement "2") et ainsi de suite jusqu' à la dernière cellule non vide ( valeur aléatoire suivant la taille du fichier).

Cordialement

C'est exact.

Désolé de ne pas avoir été suffisamment précis et encore merci

Rechercher des sujets similaires à "boucle recherche incrementation"