Excel/ VB remplir automatiquement les cellules
Résolu
tsangeps
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je fais appel à vous aujourd'hui;
je travaille sur une extraction des données sur une base de travaux (pas très personalisable)
j'obtiens donc un tableur qui a encore besoin de traitement et manuellement cela me prend beaucoup de temps. (plusieurs milliers de lignes)
aa bb cc dd
AA
bb
cc
dd
cc1
dd1
BB
bb1
cc2
dd2
cc3
dd3
CC
J'aimerai donc copier le AA dans les cellules vides qui la suivent jusqu'à BB
et copier BB ainsi de suite
De même pour les autres colonnes.
Et arriver au résultat suivant :
aa bb cc dd
AA
AA bb
AA bb cc
AA bb cc dd
AA bb cc1 dd
AA bb cc1 dd1
AA bb cc1 dd1
BB bb cc1 dd1
BB bb1 cc1 dd1
BB bb1 cc2 dd1
BB bb1 cc2 dd2
BB bb1 cc3 dd2
BB bb1 cc3 dd3
BB bb1 cc3 dd3
CC bb1 cc3 dd3
Merci de votre aide
Je fais appel à vous aujourd'hui;
je travaille sur une extraction des données sur une base de travaux (pas très personalisable)
j'obtiens donc un tableur qui a encore besoin de traitement et manuellement cela me prend beaucoup de temps. (plusieurs milliers de lignes)
aa bb cc dd
AA
bb
cc
dd
cc1
dd1
BB
bb1
cc2
dd2
cc3
dd3
CC
J'aimerai donc copier le AA dans les cellules vides qui la suivent jusqu'à BB
et copier BB ainsi de suite
De même pour les autres colonnes.
Et arriver au résultat suivant :
aa bb cc dd
AA
AA bb
AA bb cc
AA bb cc dd
AA bb cc1 dd
AA bb cc1 dd1
AA bb cc1 dd1
BB bb cc1 dd1
BB bb1 cc1 dd1
BB bb1 cc2 dd1
BB bb1 cc2 dd2
BB bb1 cc3 dd2
BB bb1 cc3 dd3
BB bb1 cc3 dd3
CC bb1 cc3 dd3
Merci de votre aide
A voir également:
- Excel/ VB remplir automatiquement les cellules
- Formule excel pour additionner plusieurs cellules - Guide
- Liste déroulante excel - Guide
- Verrouiller cellules excel - Guide
- Word et excel gratuit - Guide
- Excel cellule couleur si condition texte - Guide
5 réponses
une autre solution plus rapide (0.38 s pour 25000 lignes)
bonne journée
Public Sub Remplir() Dim lifin As Long, cofin As Long, li As Long, co As Long, plage As Range Dim t Dim d As Single d = Timer Application.ScreenUpdating = False With Sheets(NF) cofin = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column For co = codeb To cofin lifin = .Cells(Rows.Count, co).End(xlUp).Row Set plage = .Range(.Cells(lideb, co), .Cells(lifin, co)) t = Application.Transpose(plage) For li = 1 To UBound(t) - 1 If t(li + 1) = "" Then t(li + 1) = t(li) Next li plage = Application.Transpose(t) Next co End With Application.ScreenUpdating = True MsgBox (Timer - d & " s") End Sub
bonne journée
Bonjour
peux tu envoyer une partie de ton fichier au format excel 2003 sur cjoint.com et joindre le lien obtenu à ton prochain message
n'oublies pas d'y ajouter quelques explications (ce que tu veux obtenir, à partir de quoi, mettre un exemple ...)
bonne suite
peux tu envoyer une partie de ton fichier au format excel 2003 sur cjoint.com et joindre le lien obtenu à ton prochain message
n'oublies pas d'y ajouter quelques explications (ce que tu veux obtenir, à partir de quoi, mettre un exemple ...)
bonne suite
Donc voici un lien vers un exemple du tableur extrait de la base
https://www.cjoint.com/?CBAqDcmYIbP
et j'aimerai avoir un résultat comme ci
https://www.cjoint.com/?CBAqGfcvA8n
Je m'explique un peu :
Par exemple pour la première colonne :
j'aimerai copier la valeur dans A2 dans les cellules qui suivent qui sont vides jusqu'à la cellule non vide c'est à dire avant A19
Merci de votre aide
https://www.cjoint.com/?CBAqDcmYIbP
et j'aimerai avoir un résultat comme ci
https://www.cjoint.com/?CBAqGfcvA8n
Je m'explique un peu :
Par exemple pour la première colonne :
j'aimerai copier la valeur dans A2 dans les cellules qui suivent qui sont vides jusqu'à la cellule non vide c'est à dire avant A19
Merci de votre aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour,
Merci beaucoup pour votre aide.
La solution fonctionne sur le fichier d'exemple que j'ai donné
mais je ne comprends pas pourquoi il ne marche pas sur le vrai fichier.
Je suis débutante en VB, et il m'indique une erreur pour
For li = 1 To UBound(t) - 1
Merci beaucoup pour votre aide.
La solution fonctionne sur le fichier d'exemple que j'ai donné
mais je ne comprends pas pourquoi il ne marche pas sur le vrai fichier.
Je suis débutante en VB, et il m'indique une erreur pour
For li = 1 To UBound(t) - 1
tu n'as pas vraiment répondu à ma question
A la compilation.
Tu vas dans l'éditeur VBA , Deboguage.Compiler y a t'il une erreur signalée
A l'exécution. Quand tu appelle ta macro, l'erreur se produit.
Dans l'éditeur VBA, la ligne se met en jaune, tu passes le curseur sur li (quelle valeur donne t'il) puis sur UBound(t) (idem)
As tu mis
Option Base 1
sur la 1° ligne de code (les indices des tableaux commenceront à 1)
A la compilation.
Tu vas dans l'éditeur VBA , Deboguage.Compiler y a t'il une erreur signalée
A l'exécution. Quand tu appelle ta macro, l'erreur se produit.
Dans l'éditeur VBA, la ligne se met en jaune, tu passes le curseur sur li (quelle valeur donne t'il) puis sur UBound(t) (idem)
As tu mis
Option Base 1
sur la 1° ligne de code (les indices des tableaux commenceront à 1)