Macro Excel remplir cellules automatiquement
chrismichel
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis confronté à un soucis avec un tableau Excel qui comporte des milliers d'entrées, je cherche donc une solution automatique pour régler ce problème mais comme je suis totalement inculte en macro Excel je m'en remets au savoir de la communauté ;-)
Je voudrais remplir une cellule avec le contenu de la cellule la plus proche située au-dessus (dans la même colonne) et qui contient une donnée. Dis comme cela c'est un peu compliqué mais voici un exemple avant/après de ce que je voudrais :
TABLEAU AVANT :
Nom1
0 Poste1
0 Poste2
Nom2
0 Poste1
0 Poste2
0 Poste3
Nom3
0 Poste1
TABLEAU APRES :
Nom1
Nom1 Poste1
Nom1 Poste2
Nom2
Nom2 Poste1
Nom2 Poste2
Nom2 Poste3
Nom3
Nom3 Poste1
Donc voilà, les 0 sont remplacés par le Nom situé au-dessus (Nom1, Nom2, Nom3).
PS : Le nombre de ligne par Nom est variable.
D'avance merci pour votre aide.
Je suis confronté à un soucis avec un tableau Excel qui comporte des milliers d'entrées, je cherche donc une solution automatique pour régler ce problème mais comme je suis totalement inculte en macro Excel je m'en remets au savoir de la communauté ;-)
Je voudrais remplir une cellule avec le contenu de la cellule la plus proche située au-dessus (dans la même colonne) et qui contient une donnée. Dis comme cela c'est un peu compliqué mais voici un exemple avant/après de ce que je voudrais :
TABLEAU AVANT :
Nom1
0 Poste1
0 Poste2
Nom2
0 Poste1
0 Poste2
0 Poste3
Nom3
0 Poste1
TABLEAU APRES :
Nom1
Nom1 Poste1
Nom1 Poste2
Nom2
Nom2 Poste1
Nom2 Poste2
Nom2 Poste3
Nom3
Nom3 Poste1
Donc voilà, les 0 sont remplacés par le Nom situé au-dessus (Nom1, Nom2, Nom3).
PS : Le nombre de ligne par Nom est variable.
D'avance merci pour votre aide.
A voir également:
- Macro Excel remplir cellules automatiquement
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Verrouiller cellules excel - Guide
- Excel additionner plusieurs cellules - Guide
- Word et excel gratuit - Guide
4 réponses
Bonjour,
des milliers de lignes, c'est combien? la macro sera complètement différente selon le nombre de milliers (rapidité d'exécution)!
dans l'attente
des milliers de lignes, c'est combien? la macro sera complètement différente selon le nombre de milliers (rapidité d'exécution)!
dans l'attente
Bonjour, (coucou michel ! ;))
Plus simplement peut être :
Supposant que la dernière ligne à compter en colonne B puisque par défaut la première colonne n'est pas complète.
Sur 3000 lignes, ça prendra 1 seconde.
m@rina
- "Sur le forum bureautique, on pose des questions concernant la bureautique..."
- "Ah bon ???"
Plus simplement peut être :
Supposant que la dernière ligne à compter en colonne B puisque par défaut la première colonne n'est pas complète.
sub remplir()
Dim ligne, DL
Dim texte
DL = Range("B65536").End(xlUp).Row 'dernière ligne de la col B
For ligne = 1 To DL
If Cells(ligne, 1) <> "" Then
texte= Cells(ligne, 1)
Else
Cells(ligne, 1) = texte
End If
Next ligne
end sub
Sur 3000 lignes, ça prendra 1 seconde.
m@rina
- "Sur le forum bureautique, on pose des questions concernant la bureautique..."
- "Ah bon ???"
bonjour M@rina,
je viens de tester sur 3000 lignes aussi: 0,047 seconde...(ram: 512)
mais il me semble que dans le résultat, il faut le nomN puis le nomN en cours et le numéro de poste tant qu'on a zéro avant posteX ?
peut ^tre sur 2 colonnes d'ailleurs! moi j'ai tout regroupé dand la m^ colonne
cordialement
je viens de tester sur 3000 lignes aussi: 0,047 seconde...(ram: 512)
mais il me semble que dans le résultat, il faut le nomN puis le nomN en cours et le numéro de poste tant qu'on a zéro avant posteX ?
peut ^tre sur 2 colonnes d'ailleurs! moi j'ai tout regroupé dand la m^ colonne
cordialement
Bonjour tou(te)s
Beh moi je trouve qu'avant de se décarcassés vaudrait mieux avoir des explications un peu (beaucoups) plus "explicite".
Et remplace tes 0 par des noms ce serras plus simple, parce que des zéro partout j'y comprend rien.
A+
Beh moi je trouve qu'avant de se décarcassés vaudrait mieux avoir des explications un peu (beaucoups) plus "explicite".
Et remplace tes 0 par des noms ce serras plus simple, parce que des zéro partout j'y comprend rien.
A+
Option Explicit Const Col As Byte = 1 'colonne à traiter Const Deplig As Byte = 1 'ligne départ Const col_r As Byte = 3 'colonne de restitution Sub donner_prefixe_poste() Dim Derlig As Long, Nbre As Long, Lig As Long Dim tablo Dim cptr As Long, nom As String Derlig = Cells(Cells.Rows.Count, 1).End(xlUp).Row tablo = Application.Transpose(Range(Cells(Deplig, Col), Cells(Derlig, Col))) For cptr = 1 To UBound(tablo) If tablo(cptr) Like "Nom*" Then nom = tablo(cptr) Else tablo(cptr) = nom & Replace(tablo(cptr), 0, "") End If Next Application.ScreenUpdating = False Range(Cells(Deplig, col_r), Cells(30000, col_r)).Clear Cells(Deplig, col_r).Resize(UBound(tablo), 1) = Application.Transpose(tablo) End Subtu adaptes les constantes col, deplig et col_r à la disposition de ton classeur (col_r peut être égal à col pour transformer la colonne initiale)
Mais quelque chose me dit qu'on pourrait le faire par formule...
si en fait on a Toto à la place de nom1, Bidochon -nom2 etc
remplacer:
par