[Excel] Remplir la prochaine cellule vide

Résolu/Fermé
betamorphe Messages postés 3 Date d'inscription dimanche 2 août 2009 Statut Membre Dernière intervention 4 août 2009 - 2 août 2009 à 13:35
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 - 4 août 2009 à 20:42
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
A voir également:

10 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
3 août 2009 à 00:02
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
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
2 août 2009 à 13:41
>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
0
betamorphe Messages postés 3 Date d'inscription dimanche 2 août 2009 Statut Membre Dernière intervention 4 août 2009
2 août 2009 à 14:14
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.
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
2 août 2009 à 23:42
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
3 août 2009 à 11:12
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.


0
betamorphe Messages postés 3 Date d'inscription dimanche 2 août 2009 Statut Membre Dernière intervention 4 août 2009
4 août 2009 à 01:04
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 ...
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
4 août 2009 à 09:10
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.
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
4 août 2009 à 15:17
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.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
4 août 2009 à 19:22
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.
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
4 août 2009 à 20:42
Bonsoir gbinforme,
Merci infiniment pour l'explication, c'est super sympa, il est toujours profitable de vous lire.
A une prochaine
0