Macro de cellule vide

Fermé
nadia - 4 mai 2005 à 11:43
 ernest - 21 juin 2007 à 17:57
bonjour,


je suis novice en visual basic et je dois chercher à réaliser une macro qui doit me renvoyer une valeur non vide sur une colonne.
ex: je me trouve en A5 et en A4; A3; A2 mes cellules sont vides alors qu'en A1 iil y a une valeur. cette valeur en A1 je veux la mettre en A5.
Comment puis je faire?


merci de votre aide

7 réponses

tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
4 mai 2005 à 14:01
Re,

??? ça fonctionne chez moi copie/ colle direct le code dans un module, sur CCM le Exit For s'affiche sur une autre ligne alors qu'il doit etre en fin de ligne...Je te remets le code avec les nméros de ligne (à supprimer)
ligne1 Sub toto()
ligne2'remonte depuis A4 vers A1, prend la premiere cellule non-vide et mets la valeur en A5
ligne 3Dim i As Integer
ligne4For i = 4 To 1 Step -1
ligne5If Not IsEmpty(Range("A" & i)) Then Range("A5").Value = Range("A" & i).Value: Exit For
ligne6Next i
ligne7End Sub

Sinon tes cellules ne sont peut etre pas vides (espace,caractere spécial....) => il faudrait ds ce cas changer le critere non vide par autre chose (> à 0, numérique/non numérique etc...)
Sinon...je vois pas trop....

A+
2
désolée mais cela ne fonctionne pas.
pourrais tu m'envoyer ton fichier pour que je voie en fait excatement ton mécanisme?

merci
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
4 mai 2005 à 11:54
Salut,

Bcp de solutions différentes, peux-tu expliquer le but de la manip pour qu'on puisse t'aider ("doit me renvoyer une valeur non vide sur une colonne" ???)
Sinon :
Range("A5").Value = Range("A1").Value
ou encore : Range("A5").Formula = "=A1"
ou copier/coller etc....

A+
0
en fait je dois récuperer la cellule qui est au dessus de A5. sauf que si elle est vide je dois aller chercher les cellules au dessus tant que je n'ai pas trouver de valeur. mais si il y a une valeur en A4 je dois la copier en A5

j'espère etre plus lisible
0
cela ne renvoie rien meme si j'enleve le exit for
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
4 mai 2005 à 14:20
Re,

Si tu veux, mais j'ai rien ds le classeur,j' ai fait ça par rapport à ta demande....Par contre tu peux m'envoyer ton classeur si tu veux (tomsound2222@yahoo.fr)ou laisse-moi ton adresse je t' envoie ce que j'ai fait( qui fonctionnne chez moi....)

A+
0
en fait en le faisant dans un autre classeur cela marche.
je vais t'envoyer mon fichier pour voir
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
4 mai 2005 à 15:07
OK, les cellules ne sont pas vides, il y a une formule....Ce qui t'intéresse est un montant donc une valeur numérique :
Sub toto()
'remonte depuis J49 vers J46, prend la premiere cellule numérique et mets la valeur en J50 puis stoppe
Dim i As Integer
For i = 49 To 46 Step -1
If IsNumeric(Range("J" & i).Value) Then Range("J50").Value = Range("J" & i).Value: Exit For
Next i
End Sub


A+
0
Hello,

J'ai besoin d'une macro qui me permettre de combler des cellules vides avec les infos se trouvant dans la cellule précédents les vides, sachant qu'il s'agit d'un tableau ou se problème se pose.
301385337 10585067 29/03/2007



301409243*10587086 03/04/2007


....

En faite il faudrait que le premier 301..... soit copier jusqu'au suivant et ainsi de suite pour tout le fichier....

Dur à expliquer, j'espère que vous m'avez comprise !!!
0
essaye ce code :

Option Explicit

Sub FillBlanks()
Dim rRange1 As Range, rRange2 As Range
Dim lReply As Integer

If Selection.Cells.Count = 1 Then
'MsgBox "You must select your list and include the blank cells", _
vbInformation, "OzGrid.com"
MsgBox "Votre liste doit inclure les cellules vides.", _
vbInformation, "CSI Nantes - RT"
Exit Sub
ElseIf Selection.Columns.Count > 1 Then
'MsgBox "You must select only one column", _
vbInformation, "OzGrid.com"
MsgBox "Sélectionner une seule colonne.", _
vbInformation, "CSI Nantes - RT"
Exit Sub
End If

Set rRange1 = Selection
On Error Resume Next
Set rRange2 = rRange1.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0

If rRange2 Is Nothing Then
'MsgBox "No blank cells Found", _
vbInformation, "OzGrid.com"
MsgBox "Votre sélection ne comporte aucune cellule vide.", _
vbInformation, "CSI Nantes - RT"
Exit Sub
End If

rRange2.FormulaR1C1 = "=R[-1]C"
'lReply = MsgBox("Convert to Values", vbYesNo + vbQuestion, "OzGrid.com")
lReply = MsgBox("Convertir en Valeur", vbYesNo + vbQuestion, "Acceper de convertir ?")
If lReply = vbYes Then rRange1 = rRange1.Value
End Sub

L'idéal est de l'affecter à un bouton.
Tu sélectionne ta plage et tu clique sur le bouton .. ;)
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
4 mai 2005 à 12:28
Re,

Un truc comme ça doit fonctionner (doit y avoir moyen de faire mieux) -attention si tu as plusieurs non-vides, il s'arrete à la premiere, pour récupérer derniere non-vide(vers le haut),vire le ":Exit For "
Sub toto()
'remonte depuis A4 vers A1, prend la premiere cellule non-vide et mets la valeur en A5
Dim i As Integer
For i = 4 To 1 Step -1
If Not IsEmpty(Range("A" & i)) Then Range("A5").Value = Range("A" & i).Value: Exit For
Next i
End Sub


A+
-1