Décale la copie si colonne vide

Yes

XLDnaute Nouveau
Bonjour,

Tout nouveau ici et pourtant vous m'avez déjà très bien aidé par le passé !

Je suis entrain de faire un nouveau fichier pour l'hotel/restaurant où je travaille et je bloque sur un point.

- la 1ere feuille importe un fichier du logiciel hotelier "Importation Opéra"
- la 2ème feuille "Calcul Presta" va chercher si un mot est présent dans les prestations pour l'indiquer par un 1 dans la colonne
(tout en haut la somme total de prestations)
- la 3ème feuille "mise en forme" des prestations
- la 4ème feuille "impression document" est le récapitulatif pour l'impression de mon rapport.

Je souhaiterai qu'il y ai en 4ème feuille uniquement les colonnes où j'ai une prestation à mettre en chambre et qu'il ne recopie pas les colonnes où il n'y a pas de prestations à mettre.

Par exemple aujourd'hui :
Rien après Voss (colonne E) on passerai directement à la colonne O
Idem pour les numéros de chambres - rien après la 10 on passerai à la chambre 21

merci beaucoup pour votre aide ! je galère pas mal !
 

Pièces jointes

  • presta resto.xlsx
    67.9 KB · Affichages: 25
Dernière modification par un modérateur:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Décale la copie si colonne vide

Bonsoir Yes et bienvenue sur XLD :),

Un essai par macro dans le fichier joint. Le code est dans le module de code de Feuil4:
VB:
Sub reduire()
Dim L1&, L2&, C1&, C2&, i&, j&, aux&

  L1 = 6: L2 = Cells(Rows.Count, "b").End(xlUp).Row
  C1 = 3: C2 = Rows(5).Find("MATIN", , xlValues, xlWhole).Column - 2
  Application.ScreenUpdating = False
  
  For j = C2 To C1 Step -1
    aux = Application.WorksheetFunction.Count(Range(Cells(L1, j), Cells(L2, j)))
    If aux = 0 Then Range(Cells(L1 - 1, j), Cells(L2 + 1, j)).Delete xlShiftToLeft
  Next j
  
  C2 = Rows(5).Find("MATIN", , xlValues, xlWhole).Column - 2
  If C2 = 2 Then
    Range(Cells(5, 1), Cells(Rows.Count, 1)).EntireRow.Delete
  Else
    For i = L2 To L1 Step -1
      aux = Application.WorksheetFunction.Count(Range(Cells(i, C1), Cells(i, C2)))
      If aux = 0 Then Cells(i, C1).EntireRow.Delete
    Next i
    Rows(5).Copy Rows(Cells(Rows.Count, "b").End(xlUp).Row + 2)
  End If
End Sub
 

Pièces jointes

  • Yes- presta resto- v1.xlsm
    91.6 KB · Affichages: 32
Dernière édition:

Yes

XLDnaute Nouveau
Re : Décale la copie si colonne vide

Bonjour,

Génial c'est exactement ça... bon depuis ce matin je cherche a comprendre comment cela fonctionne !!

et aussi pourquoi il recopie la ligne en bas, mais pas vraiment là ou je veux... je souhaite juste une ligne au-dessus.

Merci énormément, je vais essayer d'analyser pour l'appliquer sur d'autres tableaux.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Décale la copie si colonne vide

Bonsoir Yes,

(...) bon depuis ce matin je cherche a comprendre comment cela fonctionne !! (...)

Veuillez trouver ci-joint le fichier avec le code accompagné de commentaires.

(...) et aussi pourquoi il recopie la ligne en bas, mais pas vraiment là ou je veux... je souhaite juste une ligne au-dessus. (...)

J'ai rajouté dans le code la possibilité de ne pas avoir le rappel des en-têtes au bas du tableau.
Voir les lignes de commentaires commençant par '**

 

Pièces jointes

  • Yes- presta resto- v1 (commenté).xlsm
    93.8 KB · Affichages: 18

Yes

XLDnaute Nouveau
Re : Décale la copie si colonne vide

Merci beaucoup, avec les commentaires c'est un peu plus simple... !!!!
Et aussi j'ai appliquer l'écran statique dans d'autres fichiers, ça fait plus propre que voir la liste de calculs.

Maintenant je ne comprends pas pourquoi il me laisse les deux dernières colonne "renouvellement vip" et "top vip" ?
c'est plus un problème de formule que de supression non ?

Si quelqu'un peut jeter un oeil.

Merci
 

Pièces jointes

  • Yes- presta resto- v3.xlsm
    249.2 KB · Affichages: 21

Discussions similaires

Statistiques des forums

Discussions
312 501
Messages
2 089 014
Membres
104 005
dernier inscrit
Maxence