rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Macro de cellule vide

nadia, le mercredi 4 mai 2005 à 11:43:46
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
Répondre à nadia  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
tompols, le mercredi 4 mai 2005 à 11:54:22
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+
Répondre à tompols

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
nadia, le mercredi 4 mai 2005 à 12:01:37
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
Répondre à nadia

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
tompols, le mercredi 4 mai 2005 à 12:28:41
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+
Répondre à tompols

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
nadia, le mercredi 4 mai 2005 à 13:19:59
cela ne renvoie rien meme si j'enleve le exit for
Répondre à nadia

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
tompols, le mercredi 4 mai 2005 à 14:01:36
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+
Répondre à tompols

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
nadia, le mercredi 4 mai 2005 à 14:13:38
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
Répondre à nadia

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
tompols, le mercredi 4 mai 2005 à 14:20:09
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+
Répondre à tompols

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
nadia, le mercredi 4 mai 2005 à 14:24:43
en fait en le faisant dans un autre classeur cela marche.
je vais t'envoyer mon fichier pour voir
Répondre à nadia

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
tompols, le mercredi 4 mai 2005 à 15:07:33
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+
Répondre à tompols

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
céline, le jeudi 5 avril 2007 à 11:43:29
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 !!!
Répondre à céline

11


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
 ernest, le jeudi 21 juin 2007 à 17:57:00
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 .. ;)
Répondre à ernest
Logiciels pertinents trouvés dans les téléchargements
Télécharger PSP Video 9 2.25PSP Video 9 - PSP Video 9 est un outil de conversion gratuit permettant de convertir des fichiers vidéo (avi, divx, mpeg, etc.) au formats...Catégorie: Edition vidéo
Licence: Freeware/gratuit
Télécharger MTV Video Converter 1.11.4MTV Video Converter - Le programme MTV Video Converter est un convertisseur vidéo vers le format MTV acceptant les formats d'entrée suivants : ...Catégorie: Conversion
Licence: Freeware/gratuit
Télécharger WinAVI Video Capture 2.0.0.1WinAVI Video Capture - WinAVI Video Capture peut capturer vos films en provenance de périphériques AV comme un magnétoscope, un camescope ou une...Catégorie: Edition vidéo
Licence: Freeware/gratuit
Télécharger PS3 Video 9 1.94PS3 Video 9 - PS3 Video 9 est un outil de conversion gratuit permettant de convertir des fichiers vidéo (avi, divx, mpeg, etc.) au formats...Catégorie: Edition vidéo
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « macro de cellule vide »