Se connecter avec
S'enregistrer | Connectez-vous

Macro permettant d'étendre cellules dans une colonne

Dernière réponse : dans Programmation

Bonjour à tous,

Déjà merci de lire ce message si vous en êtes là !

Je me permets de poster sur ce forum car j'ai un petit souci sur Excel.

Je souhaite développer une macro qui me permet d'étendre des valeurs dans une colonne, je m'explique : une macro qui scanne la colonne dès la première ligne, recopie la valeur correspondante jusqu'à la dernière cellule vide suivante, et ainsi de suite, jusqu'à la dernière cellule non vide de la colonne. Pour parler simplement, une macro qui bouche les trous avec les valeurs de la cellule non vide du dessus...

J'ai vaguement une idée de ce qu'il faut faire, à base de boucles qui incrémentent des variables me permettant de détecter la cellule non vide qui suit etc. mais je n'y connais rien en malheureusement rien en programmation en dehors de souvenirs lointains de prépa et d'école d'ingé...

Merci de votre aide,

Bonne soirée,

Arcteek
Lassé par la pub ? Créez un compte
Expert Programmation

Salut l'ingénieur,

Ben comme on n'est pas ici pour faire ton travail - conformément au règlement, on ne pourra pas beaucoup t'aider.
Sauf à nous proposer un petit algo qu'on pourrait t'aider à traduire en VB.

Un autre qui peut t'aider, c'est l'enregistreur de macro. Mais le code tout pourri qu'il produit aura besoin d'être revu.

Salut !

J'ai continué à chercher de mon côté et j'ai trouvé un truc qui marche, que j'ai enregistré avec l'enregistreur de macro.

Je créé 3 colonnes :

- une première qui prend la valeur 1 quand la cellule de la même ligne de ma colonne à corriger est non vide (en l'occurrence non nulle) ;
- une autre avec un truc qui s'incrémente de 1 lorsqu'il y a un 1 sur la colonne précédente ;
- une autre qui recopie ma colonne à corriger lorsqu'il y a eu incrémentation sur la colonne précédente, sinon la valeur de la cellule au-dessus : il s'agit de ma colonne retraitée.

Après ce travail je fais un copier valeur de ma 3e colonne et je vire les deux autres.

Ca donne ça :

Sub Extensionémetteur()
'
' Extensionémetteur Macro
' Macro enregistrée le 02/08/2011 par xxxx
'

'
Selection.Insert Shift:=xlToRight
Selection.Insert Shift:=xlToRight
Selection.Insert Shift:=xlToRight
Range("U2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=0,0,1)"
Range("V2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]=1,R[-1]C+1,R[-1]C)"
Range("W2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-1]-R[-1]C[-1]=1,RC[-3],R[-1]C)"
Range("U2:W2").Select
Selection.Copy
Range("U3:W8053").Select
ActiveSheet.Paste
Columns("W:W").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("U:V").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
End Sub



Mais j'aurais surtout besoin d'aide pour le paramétrage :
- j'aimerais rentrer à la main le nom de la colonne que je veux traiter, et pourquoi pas le nombre de lignes à traiter
- j'aimerais ne pas passer par la création de colonne mais par l'utilisation de variables

Qu'en pensez-vous ?

@+,

F.

Lassé par la pub ? Créez un compte