IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Retrouver des cellules vides de formule [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 637
    Par défaut Retrouver des cellules vides de formule
    Bonjour,
    J'ai une table avec 192 colonnes qui doivent contenir des formules.
    D'habitude, lorsque je supprime toutes les lignes de ma table pour la réinitialiser, je suis sensée conserver les formules.
    Or depuis quelques temps, quelque soit le fichier, je me retrouve avec la perte de la moitié des formules.
    Donc je veux vérifier, avant d'ajouter des données, s'il me manque des formules et si oui quel est la cellule concernée, pour lui remettre la formule.

    J'ai essayé le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim PL As Range, CEL As Range, DrCol As Byte, i as byte
    DrCol = Range("IV7").End(xlToLeft).Column
    Set PL = Range(Cells(7, 2), Cells(7, DrCol))
    For Each CEL In PL
        If CEL.Formula = "" Then GoTo linei
    linei:
    CEL.FormulaR1C1 = _ ma formule
    Next
    mon problème c'est qu'Excel considère toutes les cellules comme vide ; alors que si physiquement je fais Ctrl + flèche droite, s'il y a une formule Excel ne s'arrête pas.

    Je précise que j'ai fait mes essais avec la table remplie d'une donnée

    merci pour votre aide

  2. #2
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    L'objet Range possède une propriété HasFormula.
    Il te suffit de la tester :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub FormuleOuPas()
    Dim PL As Range, CEL As Range, DrCol As Byte
        DrCol = Range("IV7").End(xlToLeft).Column
        Set PL = Range(Cells(7, 2), Cells(7, DrCol))
        For Each CEL In PL
            If Not CEL.HasFormula Then 
                'pas de formule
            Else
                'formule
            End If
        Next
    End Sub

  3. #3
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 637
    Par défaut
    Bonjour Pijaku,
    Merci pour ta réponse si rapide, mais je viens de tester, cela ne change rien, excel s'arrête sur toutes les cellules...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test2()
    Dim PL As Range, CEL As Range, DrCol As Byte, i As Byte
    DrCol = Range("IV7").End(xlToLeft).Column
    Set PL = Range(Cells(7, 2), Cells(7, DrCol))
    'B7 I7 EY7
    For Each CEL In PL
        i = 1
        If Not CEL.HasFormula Then GoTo linei
    linei:
        MsgBox CEL.Address & " " & i
    Next
    End Sub

  4. #4
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Que te donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub TestFormule()
    Dim PL As Range, CEL As Range, DrCol As Byte, i As Integer
        DrCol = Range("IV7").End(xlToLeft).Column
        On Error Resume Next
        Set PL = Range(Cells(7, 2), Cells(7, DrCol)).SpecialCells(xlCellTypeFormulas)
        MsgBox PL.Address
    End Sub

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Manuellement pour sélectionner des cellules spécifiques
    • Sélectionner une cellule de la feuille
    • Afficher la boite de dialogue "Atteindre" (Raccourci F5)
    • Cliquer sur le bouton Cellules...
    • Cocher Constantes (pour sélectionner les cellules sans formule) ou Formules (pour sélectionner les cellules avec formule)
    • Il y a des options en plus à décocher/cocher
    • Confirmer par OK
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    D'habitude, lorsque je supprime toutes les lignes de ma table pour la réinitialiser, je suis sensée conserver les formules.
    Je ne comprends pas ce que tu expliques.
    Si on supprime une ligne, on ne peut pas garder ses formules puisque, par nature, la ligne n'existe plus.
    Je pense qu'il y a des éléments que tu n'expliques pas dans ta méthode et qui empêchent la compréhension.

    Cependant, si ton besoin est de repérer les cellules ne contenant pas de formule, il n'y a pas besoin de VBA pour ça. Tu peux le faire avec une mise en forme conditionnelle utilisant la formule FORMULETEXTE.
    Lire ça : https://support.microsoft.com/fr-fr/...e-09cda35439c8
    Les cellules sans formules pourront ainsi apparaitre en rouge (ou toute autre couleur de ton choix), ce qui permettra de les identifier.

  7. #7
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 637
    Par défaut
    @pijaku merci pour ta réponse, ton code ne renvoie rien, comme s'il n'y avait aucune cellule vide.
    (@Philippe Tulliez si manuellement, je me positionne en A7 et que je fait Ctrl + flèche droite je me retrouve en C7 (B7 est vide) puis Ctrl Fleche je me retrouve en H7 (I7 est vide) puis Ctrl Fleche je me retrouve en J7 puis Ctrl Fleche je me retrouve en EX7 (EY7 est vide)...
    @Menhir: Oui, je travaille en table référencée quand on vide la table avec delete, et qu'on remet une donnée en A7, on est sensée récupérer toutes les formules, cela fait 5 ans que je travaille avec ce tableau, là j'ai simplement rajouter des colonnes et cela ne fonctionnent plus... pourquoi certaines formules restent et pas toutes, je deviens folle je ne comprends pas.

    Merci à tous pour votre aide

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    (@Philippe Tulliez si manuellement, je me positionne en A7 et que je fait Ctrl + flèche droite je me retrouve en C7 (B7 est vide) puis Ctrl Fleche je me retrouve en H7 (I7 est vide) puis Ctrl Fleche je me retrouve en J7 puis Ctrl Fleche je me retrouve en EX7 (EY7 est vide)...
    Je n'ai pas parlé de Ctrl+Flèche bas.
    Ce que j'ai proposé c'est de sélectionner en un clic toutes les cellules d'une même feuille ayant une formule ou celles ayant des constantes mais on peut également avec la même boîte de dialogue, sélectionner les cellules vides, ayant une validation de données, mise en forme conditionnelle, etc.

    C'est un excellent outil d'analyse de cellules que l'on peut bien entendu automatiser en VBA pour l'ensemble d'un classeur ou de plusieurs.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 637
    Par défaut
    @Philippe, désolée...
    Si je choisis constantes, aucune cellule de ma ligne de formule n'est sélectionnée.
    Si je choisis formules, dans ma ligne de formule, seules les cellules qui contiennent des formules sont sélectionnées.
    Merci

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si je choisis constantes, aucune cellule de ma ligne de formule n'est sélectionnée.
    Si la cellule est vide, il est logique qu'elle ne soit pas sélectionnée. Une constante est une valeur quelconque dans une cellule
    Si je choisis formules, dans ma ligne de formule, seules les cellules qui contiennent des formules sont sélectionnées.
    Oui, cela me semble logique

    Si on souhaite sélectionner les cellules vides, il faut choisir cette option dans la boîte de dialogue Atteindre

    Comme je l'ai écrit, cette boite de dialogue permet de repérer très vite, dans une colonne, les cellules où la formule a disparu. Si je me réfère à votre demande
    D'habitude, lorsque je supprime toutes les lignes de ma table pour la réinitialiser, je suis sensée conserver les formules.
    Or depuis quelques temps, quelque soit le fichier, je me retrouve avec la perte de la moitié des formules.
    Donc je veux vérifier, avant d'ajouter des données, s'il me manque des formules et si oui quel est la cellule concernée, pour lui remettre la formule.
    Par exemple si en colonne H, L, M, Z, etc. j'ai une formule et qu'après avoir supprimé 4, 5 lignes, les formules n'apparaissent plus. Cette boîte de dialogue permet de les repérer.
    Ce que je fais en clientèle lorsqu'on doit chercher ce genre de problème. Après sélection des cellules vides dans les colonnes concernées, je mets en couleur les cellules sélectionnées.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E] Comment faire une boucle lorsqu'il y a des cellules vides
    Par Annick.w dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 01/02/2007, 22h39
  2. Réponses: 19
    Dernier message: 06/07/2006, 15h35
  3. [VBA-E]Remplir des cellules vides par des 0
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/03/2006, 13h58
  4. [VBA-E]supprimer des cellules vide
    Par garn dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/02/2006, 11h56
  5. Problemes avec des cellules vides
    Par arsgunner dans le forum ASP
    Réponses: 7
    Dernier message: 14/06/2004, 08h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo