Urgent: Ajuster une macro à la suite d'insertion de lignes dans des tableaux

S

Stéph

Guest
bonjour le forum,

J'ai un gros problème et mes capacité VBA sont dépassées !!! Et j'ai mon bos sur le dos aussi ! J'ai donc besoin de l'aide des Experts VBA !!!

Chaque tableau peur être modifié( plus ou moins de lignes )
Mais pour la macro "MàJ Soldes Ptf" mes tableaux ont en standard 12 lignes, or comme il est possible de modifier la taille
de chaque tableau dans chaque feuille, la macro "MàJ Soldes Ptf" ne complète pas correctement les tableaux,
elle se trouve décallée, les informations ne sont pas collées au bon emplacements

Je cherche un moyen de calculer le nombre de lignes qui ont été ajouté dans chaque tableau pour que la macro "MàJ Soldes Ptf"
associe les soldes aux bons endroits càd décaller la mise à jour des cellules d'autant de lignes ajoutées ou supprimées dans chaque tableaux

Je pense avoir une idée mais je ne sais pas la réaliser:
il faudrait trouver un moyen de compter les lignes de chaque tableau, si supérieur à 11 lignes( le total standard de lignes des tableaux) il faudrait décaller de x-11 lignes l'exécution de la macro "MàJ Soldes Ptf" et dans le cas contraire, faire 11-x...

voir exemple pour la feuille "portefeuille 2 "

Merci beaucoup d'avance, toute piste est la bienvenue !!

Stéph
 

Pièces jointes

  • rapprochements.zi
    0 bytes · Affichages: 36
@

@+Thierry

Guest
Bonjour Stéph, le Forum

 Urgent
  Urgent
   Urgent

    Tout est Urgent !!!
Mais ici nous ne sommes pas pressés !!! on n'a pas de Boss, et on fait ceci bénévolement par pûr plaisir ! (voir notre Charte )

Pour l'instant je ne peux télécharger de pièces jointes pour des raisons de sécurité, mais voici le B.A.Ba pour mesurer une range sur une feuille :

(NB Sous entendu que l'on parle d'un tableau linéaire structuré)

Sub MesureRange()
Dim TheRange As Range
Dim Msg As String

Set TheRange = ActiveSheet.UsedRange

Msg = "La Plage fait " & TheRange.Rows.Count & " lignes" & vbCrLf
Msg = Msg & "La Plage fait " & TheRange.Columns.Count & " Colonnes" & vbCrLf
Msg = Msg & "La première ligne de la Plage est " & TheRange.Row & vbCrLf
Msg = Msg & "La première colonne de la Plage est " & TheRange.Column & vbCrLf
Msg = Msg & "La dernière ligne de la plage est " & Cells(65536, TheRange.Column).End(xlUp).Row & vbCrLf
Msg = Msg & "La dernière colonne de la plage est " & Cells(TheRange.Row, 256).End(xlToLeft).Column & vbCrLf
Msg = Msg & "L'adresse de la plage en référence absolue est " & TheRange.Address & vbCrLf
Msg = Msg & "L'adresse de la plage en référence relative est " & TheRange.Address(False, False) & vbCrLf
Msg = Msg & "La plage contient " & TheRange.Cells.Count & " Cellules" & vbCrLf
Msg = Msg & "La plage contient " & TheRange.Rows(TheRange.Row).Cells.Count & " Cellules par ligne" & vbCrLf
Msg = Msg & "La plage contient " & TheRange.Columns(TheRange.Column).Cells.Count & " Cellules par colonne" & vbCrLf
Msg = Msg & "La prochaine cellule vide vers le bas sera " & Cells(65536, TheRange.Column).End(xlUp).Offset(1, 0).Address & vbCrLf

MsgBox "Dimension de la plage sur la feuille Active :" & vbCrLf & Msg
End Sub


Si celà peut t'aider dans l'urgence ...

Au fait sur XLD on peut appliquer ce slogan :
 L'Urgent est Fait
  L'Impossible est en Cours
   Pour les Miracles.... Prévoir un Délai !!!

Bonne Journée
@+Thierry
 
@

@+Thierry

Guest
Tiens, comme c'est peu étonnant...

Hein les amis et amies d'XLD, n'avez-vous pas remarqué, comme moi, que dans 90% des cas où l'on a un intervenant ou une intervenante qui demande un truc "Urgent" dans le libellé du sujet et bien le Fil de discussion finit en queue de poisson...

En espérant que notre Stéph n'a pas até viré tout de même et a encore accès au net
smiley_387.gif
smiley_387.gif
smiley_387.gif
smiley_387.gif


Bonne Fin de Journée
@+Thierry
 
S

Stéphane

Guest
Bonsoir le Forum et @+Thierry

Et bah non !!! Le stagiaire que je suis n'est toujours pas viré !
Je me suis débrouillé tt seul !

pour info voiçi mon code:

Private Sub CommandButton6_Click()

Dim cel As Range
Dim NbrTableau As Long
Dim CompteurTableau As Integer
Const variablefintableau As String = "Total"
Const PositionDevise As Integer = 5
Const PositionSolde1 As Integer = 6
Const PositionSolde2 As Integer = 7
Const PositionDate As Integer = 3
Dim LigneCourante As Integer
Dim LigneFinTableau As Integer
Dim GrandeurTableau As Integer
Dim StrValeur As String

Sheets("General").Activate
lig = Sheets("General").Range("B65536").End(xlUp).Row

NbrTableau = 1

For Each cel In Sheets("General").Range("B2:B" & lig)
If cel.Offset(1, 0).Value <> cel.Value Then
feuille = cel.Value

For CompteurTableau = 1 To NbrTableau

'si on est sur le premier tableau la premiere ligne est 1
If CompteurTableau = 1 Then
LigneCourante = 0
End If

'pour chaque tableau on calcul sa grandeur
For GrandeurTableau = 1 To 50
If Sheets(feuille).Range("B" & LigneCourante + GrandeurTableau).Value = variablefintableau Then
LigneFinTableau = GrandeurTableau
Exit For
End If
Next

LigneCourante = LigneCourante + GrandeurTableau

'recuperation Devise
StrValeur = Cells(cel.Row - (NbrTableau - CompteurTableau), 4).Value
Sheets(feuille).Range("B" & LigneCourante - (GrandeurTableau - PositionDevise)).Value = StrValeur

'recuperation solde 1
StrValeur = Cells(cel.Row - (NbrTableau - CompteurTableau), 5).Value
Sheets(feuille).Range("C" & LigneCourante - (GrandeurTableau - PositionSolde1)).Value = StrValeur

'repuperation solde 2
StrValeur = Cells(cel.Row - (NbrTableau - CompteurTableau), 6).Value
Sheets(feuille).Range("C" & LigneCourante - (GrandeurTableau - PositionSolde2)).Value = StrValeur

'recuperation date
StrValeur = Cells(cel.Row - (NbrTableau - CompteurTableau), 3).Value
Sheets(feuille).Range("D" & LigneCourante - (GrandeurTableau - PositionDate)).Value = StrValeur

Next 'x
NbrTableau = 1

Else
NbrTableau = NbrTableau + 1

End If

'a chaque nouvelle feuille on se remet sur la 1ere ligne

Next 'cel

End Sub

Si vous voyez un moyen d'améliorer ce code, faites sans hésiter !!

Désolé, de vous avoir perturbé par mon post !!
J'y penserai la prochaine fois !

Bonne soirée à tous

Stéph
 
@

@+Thierry

Guest
Bonsoir Stéph, le Forum

Alors c'est très bien :
1) De t'être débrouillé tout seul (c'est comme celà que tu apprendras le mieux)
2) D'être revenu
3) De te mettre à notre place et de nous comprendre

Pour t'aider, là de chez moi j'ai essayé de comprendre en téléchargeant ton "rapprochements.zi" mais en fait tu as dû avoir un problème lors du Upload...

Sinon ton code me donne mal à la tête tel quel, mais si il fonctionne c'est le principal et c'est tant mieux alors...

Bonne Soirée
@+Thierry
 
S

Stéphane

Guest
Re: Ajuster une macro à la suite d'insertion de lignes dans des tableaux

Bonsoir le forum et @+ Thierry

je redonne le fichier et je vous laisse regarder le code pour l'améliorer...
la macro s'appelle MàJ_Soldes_Ptf

et j'ai encore un autre p'tit problème, pour la macro MàJ_Onglet_Ptf,
Je n'arrive pas à modifier mon code pour ajouter uniquement les nouveaux portefeuilles situé dans la feuille" General"

Un p'tit coup de pouce et ça m'aiderai bcp !!

Sur ce, bonne fin de soirée et bonne nuit

Stéphane
 

Pièces jointes

  • exemple_test2.xls.zip
    25.4 KB · Affichages: 14

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 334
Membres
103 519
dernier inscrit
Thomas_grc11