Si ligne vide, remonter ligne de données dans feuilles adjacentes

Annie38

XLDnaute Junior
Bonjour, désolée suis de retour:eek:
J'ai voulu bidouiller un fichier à partir de 2 "vieux", j’obtiens ce qui me serait utile ( vous auriez surement fait plus simple..vous pouvez tjrs !!! ;) MAIS j'aimerai bien que dans les feuilles 3,4, etc si la ligne n'est pas vide, les données de toute la ligne soient remontées vers la première ligne vide et que cela ne supprime pas de ligne ...et que ça se fasse dans tous les onglets concernés automatiquement
J'ai essayé entre autre la macro du pb de "demax" ç'est pas ça, quand à "Pilou"..c'est tellement de la haute voltige pour moi que je vais bugger à coup sur!!
Ce n'est pas pressé...mais ne m'oubliez pas. Bonne journée
 

Pièces jointes

  • SCM entrées 0.zip
    73.9 KB · Affichages: 44
Dernière édition:

job75

XLDnaute Barbatruc
Re : Si ligne vide, remonter ligne de données dans feuilles adjacentes

Bonjour Annie38,

Pas compris ce que vous souhaitez faire, ni dans quelles feuilles.

Et je n'ai pas eu l'honneur de connaître "demax" ni "Pilou".

A+
 

Annie38

XLDnaute Junior
Re : Si ligne vide, remonter ligne de données dans feuilles adjacentes

Bonjour, "pilou et demax" ont posté sur un sujet rapprochant et dont je pensais pouvoir m'inspirer.
Pour le reste je viens de modifier le fichier zip envoyé qui n'était pas le bon...fait pas bon faire plusieurs choses à la fois!!!

Si on regarde l'onglet par exemple 14, on se rend compte que les données sont en ligne 12, et rien au dessus, . je voudrais donc, sans changer le nombre de lignes de la page , que cela remonte tout seu à la première ligne librel . et cela pour tous les onglets concernés.
Merci d'avance et A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Si ligne vide, remonter ligne de données dans feuilles adjacentes

Bonjour Annie38,

J'ai pu faire le travail de bon matin.

Dans votre fichier vous alimentiez vos tableaux (feuilles numérotées) par des formules de liaisons.

C'était bien lourd, il faut faire une croix dessus !!!

Voyez le fichier joint avec cette macro dans ThisWorkbook :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'la macro s'exécute chaque fois qu'une feuille est activée
Dim n%, F As Worksheet, total As Range, cel As Range, lig%
'---contrôles---
If Not IsNumeric(Sh.Name) Then Exit Sub
n = Sh.Name
On Error Resume Next
Set F = Sheets("RECETTES 2012")
If Err Then MsgBox _
  "La feuille 'RECETTES 2012' n'existe pas !", 48: Exit Sub
Set total = Sh.[C:C].Find("TOTAL", , xlFormulas, xlPart)
If total Is Nothing Then MsgBox _
  """TOTAL"" n'existe pas en colonne C !", 48: Exit Sub
If total.Row - 2 < Application.CountIf(F.[F:F], n) Then _
  MsgBox "La hauteur du tableau est insuffisante !", 48: Exit Sub
'---effacement---
Application.ScreenUpdating = False
Sh.Rows("2:" & total.Row - 1).ClearContents
'---remplissage---
For Each cel In F.[F:F].SpecialCells(xlCellTypeConstants, 1)
  If Err Then Exit Sub 'si pas de valeurs numériques
  lig = Sh.Cells.Find("*", total, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1
  If cel = n Then
    Sh.Cells(lig, 1).Resize(, 5) = F.Cells(cel.Row, 1).Resize(, 5).Value
    Sh.Cells(lig, 6) = F.Cells(cel.Row, 7)
  End If
Next
End Sub
A+
 

Pièces jointes

  • SCM entrées 0(1).xls
    347 KB · Affichages: 72

Annie38

XLDnaute Junior
Re : Si ligne vide, remonter ligne de données dans feuilles adjacentes

:rolleyes::D:D oh là là!! bien évidemment...je comprends rien...et en suis bien désolée, car je ne peux pas apprécier à sa juste valeur le temps et le remue méninge que vous avez passés à me concocter cela de très bon matin....mais c'est tout simplement MAAGGIIQQUUEE...ça marche.
YAPLUKA..faire la transposition sur le fichier d'origine....promis vous tiens au courant de la suite
Merci...merci...merci
 

job75

XLDnaute Barbatruc
Re : Si ligne vide, remonter ligne de données dans feuilles adjacentes

Re,

Hum, je compliquais inutilement le calcul de la variable lig, utilisez plutôt :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'la macro s'exécute chaque fois qu'une feuille est activée
Dim n%, F As Worksheet, total As Range, cel As Range, lig%
'---contrôles---
If Not IsNumeric(Sh.Name) Then Exit Sub
n = Sh.Name
On Error Resume Next
Set F = Sheets("RECETTES 2012")
If Err Then MsgBox _
  "La feuille 'RECETTES 2012' n'existe pas !", 48: Exit Sub
Set total = Sh.[C:C].Find("TOTAL", , xlFormulas, xlPart)
If total Is Nothing Then MsgBox _
  """TOTAL"" n'existe pas en colonne C !", 48: Exit Sub
If total.Row - 2 < Application.CountIf(F.[F:F], n) Then _
  MsgBox "La hauteur du tableau est insuffisante !", 48: Exit Sub
'---effacement---
Application.ScreenUpdating = False
Sh.Rows("2:" & total.Row - 1).ClearContents
'---remplissage---
lig = 2 '1ère ligne à remplir
For Each cel In F.[F:F].SpecialCells(xlCellTypeConstants, 1)
  If Err Then Exit Sub 'si pas de valeurs numériques
  If cel = n Then
    Sh.Cells(lig, 1).Resize(, 5) = F.Cells(cel.Row, 1).Resize(, 5).Value
    Sh.Cells(lig, 6) = F.Cells(cel.Row, 7)
    lig = lig + 1
  End If
Next
End Sub
Fichier (2).

A+
 

Pièces jointes

  • SCM entrées 0(2).xls
    345 KB · Affichages: 91

Annie38

XLDnaute Junior
Re : Si ligne vide, remonter ligne de données dans feuilles adjacentes

Hello JOB75, j'ai testé..j'ai rentré mes vraies données....ça marche nickel ce programme...merci+++...c'est super ça peut servir aussi bien en recettes qu'en dépenses. Je suis sure que la formule magique en aidera plus qu'un, pour moi c'est toujours très obscur....alors à bientôt;)
 

Annie38

XLDnaute Junior
Re : Si ligne vide, remonter ligne de données dans feuilles adjacentes

RE_bonjour. Cela marche vraiment très bien.
J'ai cependant 2 questions.
- Est ce que je suis limitée dans le nombre de lignes (que ce soit dans l'onglet recettes 2012 ou le 16 que j'ai réussi à mettre en route..ce qui dit en passant a été une vraie épopée pour moi?)
- et existe t il une méthode qui ne chamboulerait pas tout, car j'ai déjà rentré pas mal de choses, et qui constituerait dans les onglets 1,2 etc à libérer les colonnes H et suivantes. En effet dans l'onglet 16 j'ai voulu me servir de la colonne H pour faire des croix de pointage ..ça se passe bien jusqu'à ce que je retourne dans recettes 2012, et quand je reviens tout à disparu. idem dans la colonne suivante où je voulais mettre un commentaire sur une ligne.

Merci d'avance:eek:
 

job75

XLDnaute Barbatruc
Re : Si ligne vide, remonter ligne de données dans feuilles adjacentes

Bonsoir Annie38,

1. Nombre de lignes

Il n'y a pas de limitation, dans aucune feuille.

Simplement, en activant une feuille type 3 4 5..., vous pouvez recevoir ce message : "La hauteur du tableau est insuffisante !".

Alors augmentez manuellement la hauteur du tableau en insérant des lignes au dessus de TOTAL.

On pourrait faire faire ça par la macro mais ça n'en vaut pas la peine...

2. Effacement

Ma macro effaçait en effet les lignes entières.

Pour limiter aux colonnes A:G j'ai ajouté ce code :

Code:
'Sh.Rows("2:" & total.Row - 1).ClearContents 'lignes entières
Sh.[A2:G2].Resize(total.Row - 2).ClearContents 'colonnes A:G
Fichier (3).

A+
 

Pièces jointes

  • SCM entrées 0(3).xls
    345.5 KB · Affichages: 49

job75

XLDnaute Barbatruc
Re : Si ligne vide, remonter ligne de données dans feuilles adjacentes

Bonjour Annie, le forum,

Une remarque sur l'inscription de commentaires en colonnes H et suivantes des feuilles 3 4 5...

Modifiez l'ordre des données en feuille RECETTES 2012.

En faisant un tri, ou en supprimant/intercalant des lignes.

Alors l'ordre des données des feuilles 3 4 5 sera aussi modifié, mais les commentaires ne suivront pas....

On peut remédier à ce problème, mais en compliquant la macro.

Je regarde ça.

A+
 

job75

XLDnaute Barbatruc
Re : Si ligne vide, remonter ligne de données dans feuilles adjacentes

Re,

Voici donc une solution pour les commentaires en feuilles 3 4 5...

- ils doivent être entrés en colonnes H ou I

- un n° de pièce doit exister en colonne A pour pouvoir les repérer.

Voir les commentaires en feuille 3.

Fichier (4).

A+
 

Pièces jointes

  • SCM entrées 0(4).xls
    347.5 KB · Affichages: 48

Annie38

XLDnaute Junior
Re : Si ligne vide, remonter ligne de données dans feuilles adjacentes

Super...la modif m'allait déjà très bien...mais vous me connaissez...j'allais surement vouloir bidouiller qqch au fil des utilisations et vous lancez un SOS.....en attendant ...si vous saviez comme le forum m'est utile...car qd on est du niveau zéro et qu'on se retrouve avec "Private Sub Workbook_SheetActivate(ByVal Sh As Object)"!!! ouhaou!!!!..la première question...c'est quoi ça, j'en fais quoi...je le mets où...ça s'enregistre où et comment ce truc là??..
Ca y est je sens que vous rigolez..mais y a de quoi!!. A chaque essai j'enregistre un nom différent (c'est allé jusqu'à 8:() et qd le nom comporte OK...c'est youpee!!
Alors vive vous tous...vive le forum... et j'allais oublié merci
 

job75

XLDnaute Barbatruc
Re : Si ligne vide, remonter ligne de données dans feuilles adjacentes

Re,

La manière (formules) dont les n° de pèces sont attribués en feuille RECETTES 2012 ne va pas.

Si l'on trie/supprime/insère des lignes les n° de pièces sont modifiés !!!

Voici une macro qui incrémente les n° de pièces quand on entre une valeur/date en colonne B :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, [B3:B65536], Me.UsedRange)
If Target Is Nothing Then Exit Sub
Dim cel As Range
For Each cel In Target
  If cel = "" Then cel.Offset(, -1) = ""
Next
For Each cel In Target
  If cel <> "" And cel.Offset(, -1) = "" Then _
    cel.Offset(, -1) = Application.Max([A:A]) + 1 'incrémentation du n°
Next
End Sub
La macro est dans le code de la feuille (clic droit sur l'onglet et Visualiser le code).

Fichier (5).

A+
 

Pièces jointes

  • SCM entrées 0(5).xls
    351.5 KB · Affichages: 70

Discussions similaires

Statistiques des forums

Discussions
312 413
Messages
2 088 195
Membres
103 755
dernier inscrit
Nicolas TULENGE