Macro pour selectionner cellules vides et y mettre formule

merguez59

XLDnaute Nouveau
Bonjour à tous,

Je souhaite créer une macro qui permettrai de selectionner les cellules vides et des 0 et d'y mettre une formule.

Voici un exemple en PJ

dans la Feuil1 il y des references et des jours. Certaine reference n'ont pas de jour renseigné ou alors c'est 0

Je veux qu'un macro aille faire une recherchev depuis les données de la Feuil2 (où elle trouvera les infos manquantes) pour remplir les vides et 0 de la Feuil1

Merci d'avance!


PS: oui je pourrai faire un filtre selectionner les vides et 0 et faire la recherchev. Mais le fichier en PJ est un exemple d'un fichier plus lourd qui est édité tous les jours et pour lequel une macro avec d'autres actions existe
 
Dernière édition:

Kevin B

XLDnaute Junior
Re : Macro pour selectionner cellules vides et y mettre formule

Bonjour,

Ci-joint une solution qui demande à être simplifiée mais qui fonctionnne

Cdt

Kevin
 

Pièces jointes

  • Classeur1.xlsm
    19.5 KB · Affichages: 49
  • Classeur1.xlsm
    19.5 KB · Affichages: 58
  • Classeur1.xlsm
    19.5 KB · Affichages: 56

Papou-net

XLDnaute Barbatruc
Re : Macro pour selectionner cellules vides et y mettre formule

Bonjour merguez59, bonjour Kevin,

Autre type de boucle s'adaptant à un nombre de cellules évolutif et autorisant un code très concis:

Code:
Sub AutreTest()
Dim Cel As Range, Ref As Range

For Each Cel In Feuil1.Columns(1).SpecialCells(xlCellTypeConstants)
  If Cel.Offset(0, 1) <= 0 Then
    Set Ref = Feuil2.Columns(1).Find(Cel.Value, LookIn:=xlValues)
    If Not Ref Is Nothing Then Cel.Offset(0, 1) = Ref.Offset(0, 1)
  End If
Next
End Sub

Bonne journée.

Cordialement.
 

Papou-net

XLDnaute Barbatruc
Re : Macro pour selectionner cellules vides et y mettre formule

Bonjour Papou-net,

En effet, le code est très court, je ne comprend pas tout...

Kevin

RE

Code:
For Each Cel In Feuil1.Columns(1).SpecialCells(xlCellTypeConstants)
Cette boucle effectue la recherche dans les cellules de la colonne A de la Feuil1 qui contiennent une valeur. Elle n'est pas limitée par l'indice de boucle et donc pas besoin de modifier le code en cas d'ajout ou de suppression de données. De plus, il peut y avoir des blancs entre les lignes, celà n'a aucune importance.

Code:
If Cel.Offset(0, 1) <= 0 Then
Cette condition teste si la valeur de la cellule adjacente (0 = pas de décalage de ligne, 1 = décalage d'une colonne à droite) est inférieure (vide) ou égale à 0.

Code:
If Not Ref Is Nothing Then Cel.Offset(0, 1) = Ref.Offset(0, 1)
Si la référence a été trouvée dans la colonne A de Feuil2, la valeur de la cellule adjacente de droite est recopiée dans la cellule adjacente de Feuil1.

Cordialement.
 

merguez59

XLDnaute Nouveau
Re : Macro pour selectionner cellules vides et y mettre formule

Bonsoir,

Merci pour vos réponse, ca répond complètement à la demande.

Par contre, du coup, j'ai essayé d'adapter votre macro à celle qui existe déjà dans mon fichier, mais je dois mal comprendre certaines choses:

J'ai le message suivant quand je lance la macro: "End select sans End Case".

J'ai juste recopié votre code (et modifié certains éléments en fonction des colonnes de mon fichier)

Dim Cel As Range, Ref As Range

For Each Cel In Rapport1.Columns(11).SpecialCells(xlCellTypeConstants)
If Cel.Offset(0, 6) <= 0 Then
Set Ref = délaivideV12donnéesV3.Columns(2).Find(Cel.Value, LookIn:=xlValues)
If Not Ref Is Nothing Then Cel.Offset(0, 2) = Ref.Offset(0, 2)

End If

(dans mon vrai fichier feuil1 c'est Rapport1 et feuil2 c'est délaivideV12donnéesV3)
 

Papou-net

XLDnaute Barbatruc
Re : Macro pour selectionner cellules vides et y mettre formule

RE

@ Kevin

C'est cette ligne qui s'en charge:

Code:
Set Ref = Feuil2.Columns(1).Find(Cel.Value, LookIn:=xlValues)

@ merguez59:

Pour avoir une idée du problème il faudrait, à défaut d'une copie du fichier, voir la macro dans sa globalité. En effet, s'il y a un Select Case, ça peut tout changer.

A +

Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 146
Membres
103 130
dernier inscrit
FRCRUNGR