XL 2016 Macro - Sauter une étape si cellule vide

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

  • suivi de commandes.xlsm
    33.8 KB · Affichages: 19

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • suivi de commandes.xlsm
    34.5 KB · Affichages: 5

Olypemmy

XLDnaute Nouveau
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 !🥰😍
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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.🤣
 

Olypemmy

XLDnaute Nouveau
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
 

Discussions similaires