Forum Clubic

Aide pour programmation vba

bonjour,
je voulais une petite aide pour un programme,je dois ecrire une macro sous vba qui me permettra de remplacer les donnees manquantes par celle qui la précède

Et qu’est-ce que tu n’arrives pas à faire?

Pourrais tu mettre un titre plus explicite s’il te plait?

Merci :slight_smile:

Quel VBA ?
pour excel, pour word, ou autre ? …
C’est quoi, une donnée qui en précède une autre ?
Liste déroulante, tableau de valeurs en ligne, tableau de valeurs en colonnes, énumération … ?

non jai fais un programme mais ca ne fonctionne pas.
Public Sub CaseVide()

Dim i As Integer
Dim j As Integer
Dim cells As Range

For Each cells In Selection
If cells = “” Then
cells = cells.Offset(i - 1, j)
End If
Next
End Sub


VBA pour excel c'est un tableau comprenant des indices boursiers avec des donnees journalières, il manque des donnees du fait des jours feriés il faut donc prendre le cours du jour precedent et le placer dans la case du cours manquant

If cells = “” Then
cells = cells.Offset(- 1)
End If

A ta place, je n’emploierais pas cells, c’est un mot réservé, donc on ne peut pas préjuger de son comportement.
Par contre, tu peux employer cell ou même cellule, comme ca il n’y aura pas d’ambigüité.
D’autant plus que each cell, c’est du singulier, non ?

le programme ne tourne pas en mettant cell.
je suis débutante en vba donc je ne sais pas comment faire.
Edité le 13/03/2008 à 14:44

C’est pas cell.value pour récupérer le contenu d’une cellule (en valeur) ?

oui je pense que c’est cells.valueon m’ai dit de faire
Public Sub CaseVide()
Dim cells As Range

For Each cells In Selection
If cells.Value = Empty Then cells.Value = cells.Offset(-1, 0).Value
Next cells

End Sub
mais ca ne marche toujours pas

Cell ou Cell.Value, ça doit marcher, Value étant pris par défaut
Non, si ça ne marche pas, il y a des chances que ce soit parce que tu ne rentres pas dans dans la boucle
Il faudrait connaitre la valeur de sélection pour confirmer
Essaie de rajouter cette ligne

MsgBox Selection.address
If cellule = “” Then
cellule = cellule.Offset(- 1)
End If etc.

et vérifie que la plage donnée correspond bien aux cellules que tu veux explorer