[Excel] Remplir la prochaine cellule vide [Résolu/Fermé]

Signaler
Messages postés
3
Date d'inscription
dimanche 2 août 2009
Statut
Membre
Dernière intervention
4 août 2009
-
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
-
Bonjour,
premier message ici, je déséspère de trouver une solution (habituellement la fonction rechercher est très satisfaisante).
Voici mon problème : j'ai une macro qui remplit la cellule active par un formule, seulement je dois sélectionner cette cellule, je souhaiterai ajouter un code qui cherche la première cellule vide entre B10 et B30 et y colle ma formule.

Je collerai bien ma macro directement ici, mais j'ai fais une mauvaise manip et j'ai perdu mon classeur de macro, pas compliqué à retrouver.

Si je ne suis pas très clair je peux ajouter une capture d'écran de mon fichier excel.

Merci d'avance

Benjamin

10 réponses

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 112
bonjour

Comme je doute fort que find trouve une cellule vide, je propose :
Public Sub premvide()
Dim elm As Range
For Each elm In Cells.Range("B10:B30")
    If IsEmpty(elm.Value) Then
        elm.FormulaR1C1 = "=R[-1]C[1]+R2C15"
        Exit For
    End If
Next elm
End Sub

ainsi si je lance 3fois ma macro elle remplira B10, puis B11, puis B12

C'est ce qui devrait se dérouler comme fonctionnement.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 58222 internautes nous ont dit merci ce mois-ci

Messages postés
25215
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
13 août 2020
5 403
>Bonbour
difficile en effet; sans la macro, de vous donner le libellé;
Peut être en essayez d'adapter cà à votre cas
Dim cellulevide As String
On Error Resume Next
Set celluletrouvé = [H11:H10000].Find(What:=cellulevide)
Crdlmnt
Messages postés
3
Date d'inscription
dimanche 2 août 2009
Statut
Membre
Dernière intervention
4 août 2009

Sub auto()
ActiveCell.Select
ActiveCell.FormulaR1C1 = "=R[-1]C[1]+R2C15"
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub

C'est donc la première ligne "ActiveCell.Select" que je voudrais changer pour aller à la première cellule vide entre B10 et B30, ainsi si je lance 3fois ma macro elle remplira B10, puis B11, puis B12 indépendamment de la cellule déjà active.
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 063
Bonjour,
Essayez cette variante,
Sub auto()
Dim adr As String
With ActiveSheet.Range("B10:B30")
    Set c = .Find("", LookIn:=xlValues)
    If Not c Is Nothing Then
        Do
            adr = c.Address
' *** la cellule vide reçoit l'adresse et le mot vide.
            Range(adr).Value = adr & " est vide"
            Set c = .FindNext(c)
        Loop While Not c Is Nothing
   End If
End With
End Sub
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 063
Bonjour gbinforme,
Eh bien j'ai testée mon code et la fonction [FIND] fonctionne correctement.

Au passage je profite de votre réalisation différente.
Merci.


Messages postés
3
Date d'inscription
dimanche 2 août 2009
Statut
Membre
Dernière intervention
4 août 2009

Merci beaucoup, j'ai essayé la seconde version, elle me semblait plus simple et toute faite.

Juste pour pas que tu m'ais maché tout le boulot et que je recopie betement, si tu pouvais m'expliquer le code ça serait vraiment sympa, comme ça si je dois refaire une macro qui y ressemble je pourrai me débrouiller.

Et encore merci, ça va me faciliter du boulot ...
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 112
bonjour Le Pingou et Vaucluse,

Eh bien j'ai testée mon code et la fonction [FIND] fonctionne correctement.

Désolé de n'avoir pas mieux précisé ma formulation car je ne mettais nullement en cause le codage de la fonction find qui était totalement correct dans les 2 formulations.

Cependant, comme d'autres fonctions ou propriétés sous excel, la recherche d'une cellule vide avec find n'est pas toujours assurée du résultat et présente quelques fonctionnements curieux qui inspirent ma méfiance car ils sont difficiles à comprendre lorsque l'on en est victime.

Vous pouvez le vérifier en mettant vos codes sur une plage totalement vide et non accédée, ce qui peut bien sûr être le cas dans la demande qui manifestement crée une formule sur une nouvelle ligne.

Effectivement ma phrase n'était pas compréhensive avec sa formulation succincte et je vous prie de m'en excuser.

bonjour betamorphe,

si tu pouvais m'expliquer le code ça serait vraiment sympa,

Le code est simpliste en effet et il consiste à parcourir avec la boucle For les cellules de la plage, et à tester si la cellule est vide (IsEmpty) en s'arrêtant sur la première trouvée après avoir inséré la formule. Comme excel balaye nativement de haut en bas, cela correspond à ta demande.
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 063
Bonjour gbinforme,
Merci infiniment pour l'explication concernant la fonction [FIND].
Je réalisé l'essai que vous proposé.
Eh bien si la plage est vide c'est surprenant il oublie la première cellule vide mais il la reprend après avoir traitée la dernière.

Note : qu'est ce que vous entendez par : plage vide non accédée !

Excellente semaine.
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 112
bonjour Le Pingou,

qu'est ce que vous entendez par : plage vide non accédée !

Peut-être pas clair effectivement. Si la dernière cellule utilisée (ctrl + fin) est par exemple F22 et que vous lanciez la macro sur B30:B40, il ne va pas y avoir de cellule vide dans la plage.

Cela fait partie des fonctions qui ont des résultats imprévus comme aussi UsedRange qui n'évolue pas en inférieur même si l'on supprime des lignes et cela peut parfois créer des migraines !

C'est uniquement pour ce comportement un peu imprévisible de la fonction find sur recherche de vides que j'émettais des doutes dans l'utilisation alors que pour rechercher des valeurs elle est très performante, bien paramétrable et facilement utilisable, même sur un classeur complet.

Bonne soirée et à bientôt sur un autre sujet.
Messages postés
9745
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
24 juillet 2020
1 063
Bonsoir gbinforme,
Merci infiniment pour l'explication, c'est super sympa, il est toujours profitable de vous lire.
A une prochaine