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

[Résolu]
Signaler
Messages postés
47
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
21 mai 2007
-
Messages postés
133
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
14 octobre 2011
-
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

Messages postés
133
Date d'inscription
lundi 4 octobre 2004
Statut
Membre
Dernière intervention
14 octobre 2011
1
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
48
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
24 mars 2006

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
Messages postés
48
Date d'inscription
samedi 18 novembre 2000
Statut
Membre
Dernière intervention
24 mars 2006

Sorry j'ai oublié, tu peux changer le range comme tu veux , meme le "variabliliser"

A+
Messages postés
47
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
21 mai 2007

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 !!