[Excel] Remplir la prochaine cellule vide

Résolu
betamorphe Messages postés 3 Statut Membre -  
Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   -
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
Configuration: Windows
Firefox 3.0.10

10 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    >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
  3. betamorphe Messages postés 3 Statut Membre
     
    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
  4. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
  7. betamorphe Messages postés 3 Statut Membre
     
    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
  8. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  9. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
  10. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  11. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonsoir gbinforme,
    Merci infiniment pour l'explication, c'est super sympa, il est toujours profitable de vous lire.
    A une prochaine
    0