Macro de cellule vide
Fermé
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
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
A voir également:
- Macro de cellule vide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Supprimer page word vide - Guide
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne dans une cellule excel - Guide
- Formate pour taxer client frigo vide - Forum PDF
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
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)
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+
??? ç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+
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
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+
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+
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
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+
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+
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
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 :
A+
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+
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 !!!
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 !!!
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 .. ;)
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 .. ;)
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
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 "
A+
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+
4 mai 2005 à 14:13
pourrais tu m'envoyer ton fichier pour que je voie en fait excatement ton mécanisme?
merci