Passage cellule suivante si précédente vide

Résolu
pascal3110 Messages postés 139 Statut Membre -  
pascal3110 Messages postés 139 Statut Membre -
bonjour
j'ai une feuille excel je dois récupéré des données sur une autre feuille
mais je voudrais récupérer ses données en supprimant les cellules vides et en ne récupérant que les cellules ou il y a des données. et ça sur plusieurs colonnes
je ne sais pas si je suis bien clair???
merci d'avance

6 réponses

  1. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
     
    Bonjour,

    Pour cela vous allez avoir besoin de faire une macro en VBA.

    La demande est assez simple, mais l'explication relativement floue.

    Pourriez-vous s'il vous plaît envoyer un exemple avec https://www.cjoint.com/

    Faites un exemple avec une vingtaine de lignes seulement cela suffit et anonymez votre fichier avec des xxx par exemple. Mettez des couleurs afin que l'on sache quelle donnée doit être récupérée et où il faut la mettre.

    Cordialement.
    0
    1. pascal3110 Messages postés 139 Statut Membre
       
      bonjour
      pour faire plus simple voici le fichier original
      si besoin de plus d'infos n'hésitez pas à me contacter
      encore merci


      http://www.cjoint.com/c/EJrkuloQelG

      pour voir si mes idées sont bonnes
      merci
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Avant de penser VBA, penser Excel...

    avec une formule matricielle d'après Jacques Boisgontier
    http://boisgontierjacques.free.fr/

    maquette sur 1 ligne
    http://www.cjoint.com/c/EJqifo8PRWE
    0
  3. pascal3110 Messages postés 139 Statut Membre
     
    bonjour
    voici un exemple de ce que je souhaiterais faire si cela peut aider à trouver
    merci d'avance

    http://www.cjoint.com/c/EJrgo7xoRQG
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour,

      D'où l'intérêt d'être clair dès la 1° demande pour nous éviter de recommencer à passer du temps pour essayer de t'aider
      alors dis nous combien de lignes (environ) comporte ton tableau: choix entre formules matricielles et VBA
      0
      1. pascal3110 Messages postés 139 Statut Membre > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        mon tableau comporte 38 lignes
        0
  4. Gyrus Messages postés 3360 Statut Membre 526
     
    Bonjour à tous,

    Un exemple de traitement avec VBA
    https://www.cjoint.com/c/EJrhIb12jMG

    A+
    0
    1. pascal3110 Messages postés 139 Statut Membre
       
      bonjour
      c'est bien ce que tu as fais par contre j'aimerai beaucoup savoir comment on fait
      et par contre plutôt que de passer par une liste déroulante je souhaiterais avoir les bl les uns a coté des autres si cela est possible merci d'avance.
      0
    2. pascal3110 Messages postés 139 Statut Membre
       
      bonjour
      c'est bien ce que tu as fais par contre j'aimerai beaucoup savoir comment on fait
      et par contre plutôt que de passer par une liste déroulante je souhaiterais avoir les bl les uns a coté des autres si cela est possible merci d'avance.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pascal3110 Messages postés 139 Statut Membre
     
    Re,
    pour faire plus simple voici le fichier original

    http://www.cjoint.com/c/EJrkuloQelG

    pour voir si mes idées sont bonnes
    merci
    0
  7. Gyrus Messages postés 3360 Statut Membre 526
     
    Bonjour,

    Au vu de la structure de tes feuilles, il faut oublier le traitement avec un filtre avancé.

    Voici une proposition avec une macro.
    https://www.cjoint.com/c/EJthIGAjbyG

    A+
    0
    1. pascal3110 Messages postés 139 Statut Membre
       
      bonjour
      tout d'abord un grand merci c'est génial
      alors je vais exagérer
      est-ce qu'il est possible de mettre le bouton sur la feuille fab et n'en faire qu'un seul pour tout les bl?
      et est-ce que le code est le même si je fais une feuille par clients
      peux-tu m'expliquer comment ce code est fait ou c'est trop compliqué??
      encore merci
      0
      1. Gyrus Messages postés 3360 Statut Membre 526 > pascal3110 Messages postés 139 Statut Membre
         
        Est-ce qu'il est possible de mettre le bouton sur la feuille fab ?
        La procédure peut être appellée depuis n'importe quelle feuille car elle est intégrée à un module indépendant et les références sont explicites.
        Le bouton peut donc être coupé et collé sur la feuille "FEUILLE FAB".

        et n'en faire qu'un seul pour tout les BL ?

        Dans la procédure, tu peux remarquer la boucle
        For ColS = 6 To 7
        ...
        Next ColS
        C'est cette boucle qui permet de prendre en compte les différents clients.
        6 pour la colonne F, soit MONTRICHARD F.O U1
        7 pour la colonne G, soit MONTRICHARD F.O U2
        Tu peux donc continuer dans la même logique avec les autres clients (For ColS = 6 To 17 pour tout MONTRICHARD par exemple).
        Cela suppose évidemment que la trame de base est renseignée dans la feuille "BL".

        Est-ce que le code est le même si je fais une feuille par clients ?
        Dans ce cas, la boucle client disparait mais la procédure doit être modifiée pour prendre en compte le changement de feuille pour chaque client.

        Peux-tu m'expliquer comment ce code est fait ou c'est trop compliqué ?
        Je ne connais pas ton niveau de connaissance en informatique, Excel et VBA.
        Aussi, je préfère que tu me poses des questions sur les parties de code que tu ne comprends pas.

        Pour t'aider, voici le code commenté
        Sub Creer_BL()
        Dim WsC As Worksheet
        Dim DerLigS As Long, LigneS As Long, LigneC As Long
        Dim ColS As Integer, ColC As Integer
        'l'actualisation de l'écran est désactivée
        Application.ScreenUpdating = False
        'On indique que la cible est la feuille "BL"
        Set WsC = Worksheets("BL")
        'On efface les anciennes données dans la feuille cible
        WsC.Rows("10:100").ClearContents
        'On indique que la source est la feuille "FEUILLE FAB"
        With Worksheets("FEUILLE FAB")
        'On définit le numéro de la dernière ligne renseignée de la colonne A (les plats)
        DerLigS = .Range("A" & Rows.Count).End(xlUp).Row
        'On boucle sur les colonnes "Clients"
        For ColS = 6 To 7
        'On définit la première ligne pour l'ajout dans la feuille cible
        LigneC = 10
        'On définit le numéro de la colonne "Client" dans la feuille cible
        ColC = (ColS - 6) * 3 + 2
        'On boucle sur les lignes de la colonne correspondant aux plats (feuille source)
        For LigneS = 8 To DerLigS
        'Si la cellule est renseignée (et que la valeur est différente de A1 & "")
        If .Cells(LigneS, 1) <> "" And .Cells(LigneS, ColS) <> .Cells(2, 1) & "" Then
        'On copie le libellé du plat
        .Cells(LigneS, 1).Copy
        'On colle le format dans la cellule cible (pour conserver la couleur)
        WsC.Cells(LigneC, ColC).PasteSpecial (xlPasteFormats)
        'On colle la valeur dans la cellule cible
        WsC.Cells(LigneC, ColC).PasteSpecial (xlPasteValues)
        'On copie le nombre de plats
        .Cells(LigneS, ColS).Copy
        'On colle le format dans la cellule cible (pour conserver la couleur)
        WsC.Cells(LigneC, ColC + 1).PasteSpecial (xlPasteFormats)
        'On colle la valeur dans la cellule cible
        WsC.Cells(LigneC, ColC + 1).PasteSpecial (xlPasteValues)
        'On incrémente la ligne pour l'ajout dans la feuille cible
        LigneC = LigneC + 1
        End If
        Next LigneS
        Next ColS
        'On annule le mode Copier
        Application.CutCopyMode = False
        End With
        End Sub


        A+
        0
      2. pascal3110 Messages postés 139 Statut Membre > Gyrus Messages postés 3360 Statut Membre
         
        OUAH !!!!
        pour ma connaissance en excel je suis autodidacte
        donc je me limite aux fonctions simples
        donc VBA pas de connaissances du tout
        donc voilà
        je vais essayé de bosser avec tout ça et puis j'aimes bien bidouiller même si la bidouille a ses limites
        je te retiens au courant de mon avancée ou pas!!!
        encore un grand merci
        par contre sur mon fichier vois tu des choses que je pourrais améliorer ou simplifier
        0
      3. pascal3110 Messages postés 139 Statut Membre > Gyrus Messages postés 3360 Statut Membre
         
        un grand merci cela fonctionne à merveille
        0
      4. pascal3110 Messages postés 139 Statut Membre > Gyrus Messages postés 3360 Statut Membre
         
        bonjour Gyrus
        ton code est super bien par contre comment faire dans les bl pour ne pas avoir le nom du plat qui s'affiche lorsque la cellule nombre de personnes est vide?
        il y a t il une modif à faire dans le code
        et la deuxième question comment remettre les lignes supprimées sur feuille fab lorsque je les ai supprimées avec le bouton suppression lignes vides
        ci-joint le fichier en question

        http://www.cjoint.com/c/EJBoUDQOJjm

        merci d'avance
        0