Création d'un petit programme permettant de recopier des cellules

Résolu
Maxou le petit Messages postés 47 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 21 mai 2007 - 16 juin 2005 à 23:12
galopin01 Messages postés 133 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 14 octobre 2011 - 17 juin 2005 à 07:06
Bonjour ;

Régulièrement dans mon job, j'effectue des extractions de donnée d'un logiciel vers excel. Les bases ne sont pas toujours exploitables en l'état.
J'ai donc décidé de créer une macro me permettant de remettre en forme les données.
Je souhaite, dans une colonne ou figurent des données entrelancées de cellules vides, que ces données soient recopiées dans la ou les cellules vides du bas jusqu'à la donnée de la celluel suivante.
Et ainsi de suite jusqu'à la fin du tableau...

Voici le code que j'ai écrit, mais il ne fonctionne pas bien !
Les MGSBOX me permettent de savoir ou j'en suis !

Sub recopie_automatique()
Dim Cellule, Haut, Bas, Compteur
colonne = ActiveCell.Column
MsgBox ("Numéro de colonne testée : " & colonne)
Haut = Selection.End(xlUp).Row
MsgBox ("Numéro de la 1° ligne : " & Haut)
Bas = ActiveSheet.UsedRange.Rows.Count
MsgBox ("Numéro de la dernière ligne : " & Bas)
For Compteur = Haut To Bas
If Cells(Compteur, colonne).Value <> "" Then
Valeurcellule = Cells(Compteur, colonne).Value
MsgBox ("Valeur de la variable : " & Valeurcellule)
Compteur = Compteur + 1
If Cells(Compteur, colonne).Value = "" Then
Cells(Compteur, colonne).Value = Valeurcellule
End If
End If
Next
End Sub

4 réponses

galopin01 Messages postés 133 Date d'inscription lundi 4 octobre 2004 Statut Membre Dernière intervention 14 octobre 2011 1
17 juin 2005 à 07:06
bonjour,
tu peux utiliser le début de ton code pour écrire :
For Each cellule In Range(cells(haut,colonne),cells(bas,colonne))
....

sinon si tu veux corriger ton propre code...
Si on veut faire une analyse de l'erreur tu as écris :


For…


if cellule <> "" alors


var = cellule


if cellule = ""


'cette condition ne peut jamais être vrai car cellule <> ""


End if


End if


Next





Il fallait écrire :


For…


if cells(...) <> "" alors


var = cellule


else


cells(...) = var


End if


Compteur = Compteur + 1
Next
3
cs_David_wklw Messages postés 48 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 24 mars 2006
16 juin 2005 à 23:47
Eventuellement, le tagada, c pour que tu comprennes que tu mets ce que tu veux...

Sub test()
Dim CellulesTagadatsointsoin


For Each CellulesTagadatsointsoin In Range("A:A")


If CellulesTagadatsointsoin.Value = 0 Then
CellulesTagadatsointsoin.Value = CellulesTagadatsointsoin.Offset(-1, 0).Value
End If


Next



End Sub
0
cs_David_wklw Messages postés 48 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 24 mars 2006
16 juin 2005 à 23:48
Sorry j'ai oublié, tu peux changer le range comme tu veux , meme le "variabliliser"

A+
0
Maxou le petit Messages postés 47 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 21 mai 2007
17 juin 2005 à 06:06
Ok bien vu ça marche, mais comment dois-je faire pour que la recopie s'arrête en bas de mon tableau et non jusqu'à la fin de feuille excel.
Je débute alors je n'ai pas tout compris !!
0
Rejoignez-nous