Lister Sans Doublons Et Totalisation (VBA) (Résolue)

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

re,
sur le fichier que vous venez de poster tout est nickel...pk c'est pas tout y'a toujours une modification a faire ??
 

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Plus maintenant : Les With LignesAjustées(… sont mis.

La solution avec les ValPlgAju(Plg, LS) = Plg.Value ne pouvait pas marcher pour agrandir parce que si le tableau affecté est plus petit que la plage à garnir il met des #N/A

Reste juste que ça met la pagaille dans les numéros de lignes colonne A des feuilles ODA… Est-ce gênant ?
 
Dernière édition:

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

Merci beaucoup je vous en serai reconnaissant toute ma vie...
Je suis entrain de vérifier toutes les feuilles j vai les copier sur sap pour voir si il accepte les numéros de cette maniere ou po
 

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

malheureusement SAP n'accepte pas la manip je dois avoir les numéros des lignes sur les ODA croissants :confused:
j'ai cru que ça était résolu....est ce que c'est compliqué??
j'ai une autre remarque c'est l'actualisation : par exemple si j'écris quelque chose en bas du tableau ou si je supprime une valeur des données sources ca reste dans les feuilles de destination !!!
j'ai aussi sur la ligne 55 qui se rajoute sur la feuille RECAP avec le total c'est comme le problème d'hier
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Non, ce n'est pas très compliqué.
VB:
With LignesAjustées(Feuil4.Rows(8), LS)
   .Columns("L").Value = WorksheetFunction.Index(TS, 0, 1)
   .Columns("H").Value = WorksheetFunction.Index(TS, 0, 3)
   .Columns("A").FormulaR1C1 = "=10*ROW()-70"
   .Columns("A").Value = .Columns("A").Value
   End With
Autrement j'ai une vielle ligne 56, il suffit de l'effacer.
 

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

la dernière remarque que j'ai c'est quand par exemple j'écris quelque chose en bas du tableau de n'importe quelle onglet de destination et sur n'importe quelle cellule quand je clique par la suite sur recap et je reviens sur la feuille de destination ça enleve la mise en forme de la dernière ligne et ca garde en meme temps ce que j'ai ecrit alors qu'il devait enlever ce que j'ai ecrit en bas d tableau
 

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Il ne faut pas ajouter quoi que ce soit en bas des tableaux de destination.
 

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

vous trouverez dans le fichier ci-joint ce que je veux rajouter en bas du tableau (j'ai pas cliquer sur la feuille RECAP)
je peux pas être libre d'écrire ce que je désire en bas du tableau sans fausser les calcules ??
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Non. On n'a aucun critère permettant de savoir qu'une info présente à la fin dépasse du tableau existant ou en fait partie.
Elle fait donc partie de ce tableau à agrandir ou raccourcir au nombre de lignes exact nécessaire pour accueillir les TS.

À l'ouverture du classeur il s'avère qu'il y aurait un critère: vous avez laissé une ligne vide après.
Il serait donc possible de rectifier LignesAjustées de manière à ce qu'il s'appuie sur Début.CurrentRegion au lieu de PlgUti(Début.EntireRow). Mais il faudrait la rectifier derrière pour qu'elle parte bien de la cellule spécifiée et non pas de la CurrentRegion.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Voir Edit de 22h 35

Eh non. Trop casse gueule: il y a aussi des colonnes vides qui limitent la CurrentRegion.
 
Dernière édition:

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

je sais que je vous ai cassé la tête...je m'excuse si j'abuse mais joingnez moi le fichier avec le code modifié ou ecrivez moi s'il vous plait le code pour le rectifier c'est la dernière demande qui me reste
Merci d'avance
 

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Ça ne va pas.
Tout ce qu'on pourrait faire c'est de considérer partout que la plage à ajuster comporte systématiquement 3 lignes de moins que jusqu'à le dernière cellule renseignée.

Ou alors mettre un nom dans le classeur à la plage à rectifier.
 
Dernière édition:

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

bonne idée...mais par la suite en ajoutant des informations sur les feuilles sources les lignes ajoutés ne fausseront rien ?

je crois que la première solution serait mieux
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Non, parce que lorsqu'on insère ou supprime, comme le font LignesAjustées et ValPlgAju, des lignes en plein milieux d'une plage qui porte un nom, sa référence est corrigée automatiquement en conséquence.
Je propose d'ajouter le dispositif suivant à cette Function :
S'il existe un nom "Tablo" propre à la feuille contenant la ligne spécifiée il applique la plage qui s'y réfère.
Dans le cas contraire il va jusqu'à la dernière cellule renseignée, mais il ajoute le nom dans la feuille, de sorte que si après seulement on met quelque chose derrière ce ne sera pas pris en compte.
VB:
Function LignesAjustées(ByVal Début As Range, ByVal LMax As Long) As Range
Rem. Rectifie le nombre de lignes entières utilisées à partir d'une cellules spécifiée.
'    Début : Cellule ou ligne de début.
'    LMax :  Le nombre de lignes souhaitées.
Dim Feui As Worksheet, Dif As Long
Set Feui = Début.Worksheet
On Error Resume Next
Set LignesAjustées = Feui.[Tablo]
If Err Then
   Set LignesAjustées = PlgUti(Début.EntireRow)
   Feui.Names.Add "Tablo", "=" & LignesAjustées.Address
   End If
On Error GoTo 0
Dif = LMax - LignesAjustées.Rows.Count
If Dif > 0 Then
   With LignesAjustées.Rows(LignesAjustées.Rows.Count \ 2 + 1)
      .Copy: .Resize(Dif).Insert xlShiftDown: End With
   Application.CutCopyMode = False
ElseIf Dif < 0 Then
   LignesAjustées.Rows(LignesAjustées.Rows.Count \ 2 + 1).Delete xlShiftUp
   End If
End Function
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Les noms sont définis, il ne reste plus qu'à supprimer les lignes en trop.

Marrant: après vous pouvez mettre sous la colonne D:
Code:
=SOMME(Tablo D:D)
 
Dernière édition:

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

je m'excuse mais je n'ai rien compris....
ou est le problème dans le fichier que j'ai joint.je n'ai pas compris pourquoi ca me renvoi l'erreur que je vous ai montré ??
 

Dranreb

XLDnaute Barbatruc
Re : Lister Sans Doublons Et Totalisation (VBA)

Supprimez toutes les lignes en dehors des tableaux pour que ça corrige les références des noms "Tablo" qui ont été créées alors qu'il existait déjà derrière autre chose que les tableaux et qui a donc été compté avec.
Après, tout rentrera dans l'ordre, et vous pourrez, enfin, ajouter d'autres choses derrière.
 
Dernière édition:

marfipo

XLDnaute Occasionnel
Re : Lister Sans Doublons Et Totalisation (VBA)

c'est bon....
je tiens vraiment a vous remercier tout d'abord pour le temps que vous avez consacré pour moi
et deuxièmement pour m'avoir aidé sur ce projet qui va me faciliter beaucoup la tâche
je vous en serais très reconnaissant toute ma vie
 

Discussions similaires


Haut Bas