XL 2016 Macro - Sauter une étape si cellule vide

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Olypemmy

XLDnaute Nouveau
Bonjour,
Je n'y connais absolument en macro, en vba et autre grandespossibilités sur excel ... je maitrise tout juste certaines formules un peu élaborées mais là j'ai vraiment besoin d'aide !
J'ai un fichier avec 2 feuilles, la premiere contient un genre de formulaire que je renseigne en fonction de différents critères (société, descriptif des travaux confiés et prix TTC).
Ce formulaire est ensuite imprimer à l'aide d'un bouton.
Un second bouton permet de recupérer les données variables (celle de plus haut là) dans un tableau de la seconde, vide les éléments variables du formulaire et incrémente le numero du formulaire.

Mon problème est que le formulaire est composé de 5 lignes et que lorsque ces lignes sont vides, elles sont quand même récupérées dans le tableau de la 2nde feuille. Quand elle sont pleines, c'est bien mais quand elles sont vides, elles remplissent le tableau avec rien et j'ai des lignes vides ....

Existe t il un moyen de zapper les étapes 2, et 3 de ma macro lorsque les cellules de mon formulaires sont vides ? bien entendu, je rajouterais autant d'étape que de lignes.

J'ai mis le fichier en PJ.
Dans l'onglet Historique_BC, il y a 3 tests :
En rouge, 3 lignes de la feuille engagement ont été remplies -------------------------------------------> Elles apparaissent dans le 2ème tableau
En blanc, 2 lignes de la feuille engagement ont été remplies --------------------------------------------> 3 lignes apparaissent dans le 2ème tableau dont la 3ème qui était vide
En bleu, 2 lignes de la feuille engagement ont été remplies mais une ligne vide est au milieu ---------> on voit bien la ligne vide apparaitre ...

Je n'ai pas réaliser la macro pour les lignes 9 et 10 car après avoir testé, ça ne fonctionnait pas comme je voulais !

Merci à vous

Géraud
 

Pièces jointes

Bonsoir Olypemmy,
Un essai en PJ en espérant avoir bien compris la problématique, avec :
VB:
Sub Archivage()
    With Sheets("Historique_BC")
        For L = 1 To 5
            If Cells(L + 5, "D") <> "" Then
                DL = .Range("A65500").End(xlUp).Row + 1
                .Cells(DL, "A") = [A14]
                .Cells(DL, "B") = [A2]
                .Cells(DL, "C") = Cells(L + 5, "A")
                .Cells(DL, "D") = Cells(L + 5, "B")
                .Cells(DL, "E") = Cells(L + 5, "C")
                .Cells(DL, "F") = Cells(L + 5, "D")
            End If
        Next L
    End With
    [A6:D10].ClearContents: [A13] = "": [A2] = [A2] + 1
End Sub
 

Pièces jointes

Bonsoir
Merci à vous pour la rapidité de vos réponses.
@sylvanu c'est exactement ça ! merci putain ça me changera la vie pour rechercher un historique de commande !
@Phil69970 c'est aussi ça ! merci à toi aussi et même remarque 😁 ! Pour la cellule c'est celle de la date, la A14 en fait. J'ai rectifié et c'est bon ça fonctionne.
Du coup je ne sais quelle version privilégier !

Petite question qui n'a rien à voir ! Comment on apprend macro, Vba et tout le toutim ? J'ai plein de projets et je sais pas comment les faire ni comment apprendre en fait !

Merci encore et bravo pour l'entraide !🥰😍
 
Bonsoir,
Une piste sur XLD : https://www.excel-downloads.com/media/categories/vba.4/
Sinon des recherches sur notre ami google :
Ensuite l'huile de coude, des échecs, encore des échecs , puis la lumière.🤣
 
Bonsoir Olypemmy,
Un essai en PJ en espérant avoir bien compris la problématique, avec :
VB:
Sub Archivage()
    With Sheets("Historique_BC")
        For L = 1 To 5
            If Cells(L + 5, "D") <> "" Then
                DL = .Range("A65500").End(xlUp).Row + 1
                .Cells(DL, "A") = [A14]
                .Cells(DL, "B") = [A2]
                .Cells(DL, "C") = Cells(L + 5, "A")
                .Cells(DL, "D") = Cells(L + 5, "B")
                .Cells(DL, "E") = Cells(L + 5, "C")
                .Cells(DL, "F") = Cells(L + 5, "D")
            End If
        Next L
    End With
    [A6:D10].ClearContents: [A13] = "": [A2] = [A2] + 1
End Sub

Merci pour tous vos conseils !
Je m'eclate et j'arrive à convertir les anciens reticents à Excel de mon service ....
On est pas des administratifs .... gna gna gna
En resumé on automatise la saise de certaines données qui nous permettent de gagner du temps de saisie
Une petite question sur la macro au dessus :
Comment faire pour que cela remplisse non pas la feuille "Historique_BC" dans le classeur actuel mais une feuille d'un autre classeur situé dans un autre dossier ? Genre l'onglet "Bons_ de_ Commandes" du Classeur "Suivi_budget" du chef de service situé dnas un autre dossier du réseau

Merci encore pour tout
Géraud
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
22
Affichages
1 K
Retour