Comment remplacer automatiquement le contenu de plusieurs cellules

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
b
brunoeco
Nouveau venu
Nouveau venu
Messages : 1
Inscrit le : 17 février 2020

Message par brunoeco » 17 février 2020, 11:28

Bonjour,

Je suis totalement novice sur Excel et je rencontre le problème suivant, je vais essayer d'être le plus clair possible :

Je voudrais remplacer de façon automatiser le contenu de plusieurs cellules par d'autres.
Dans une colonne j'ai :

- un contenu de cellule qui commence toujours par # accompagné de chiffres ( ex: #125478 )
toujours 3- 4 cellules contenant un numéro sans dièse.

ce qui donne a peu près pour l'exemple :

#125478
254788
245987
254781
#165897
214578
879654
125478
#125479
214565
897874
874122
125478
#125874

Le fichier étant volumineux, cela va être vraiment long de le traiter manuellement...

Ce que je cherche à obtenir:

-remplacer automatiquement le contenu de la cellule contenant un # par le contenu de la cellule suivante.

ex:

#125478
254788
245987
254781
#165897
214578
879654
125478
#125479

deviendrait :

254788

245987
254781
214578

879654
125478

je sais pas si j'ai été clair et vous remercie d'avance .
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 4'047
Appréciations reçues : 212
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 17 février 2020, 11:51

Bonjour Bruno, bonjour le forum,

Essaie comme ça (code à placer dans un module standard) :
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim COL As Integer 'déclare la variable COL (COLonne)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim I As Long 'déclare la variable I (Incrément)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
COL = 1 'définit la colonne COL (à adapter a ton cas)
DL = O.Cells(Application.Rows.Count, COL).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne COL de l'onglet O
For I = 1 To DL 'boucle sur toutes les lignes I de 1 à DL
    If Left(O.Cells(I, COL), 1) = "#" Then 'condition : si la cellule ligne I colonne COL commence par "#"
        O.Cells(I, COL).Value = O.Cells(I + 1, COL).Value 'récupère la valeur de la cellule une ligne en dessous
        O.Cells(I + 1, COL).Value = "" 'efface la valeur de la cellule une ligne en dessous
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
End Sub
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message