Macro qui agit sur la mauvaise colonne

0

Bonjour à tous.

Je travaille actuellement sur une fiche de compta, mais j'ai un problème au niveau de ma macro VBA.

Pour une raison que je ne comprends pas, ma macro modifie tout la colonne P, alors que je veux qu'elle reste comme elle est. J'ai essayé de régler le problème de plusieurs manières, mais rien n'y fait.

Quelqu'un saurait-il comment faire ?

Merci d'avance :)


Le lien du fichier : https://www.cjoint.com/c/NBgvDdVblod

Matt.VH Posté le 6 février, 22:29
par Matt.VH
Répondre
1

Bonjour Matt,

dans la sub Dispatch, il y a cette ligne :

n = UBound(LC): Application.ScreenUpdating = 0: Init

note bien qu'en bout de ligne, il y a un appel à la sub Init.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

dans la sub Init, il y a cette ligne :

[M4:P52, M57:P105, M110:P128, M133:P152] = Empty

donc parmi les plages effacées, ça efface aussi :

P4:P52, P57:P105, P110:P128, P133:P152

mystère éclairci.  ;)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

si tu veux éviter d'effacer en colonne P, mets cette ligne
à la place :

[M4:O52, M57:O105, M110:O128, M133:O152] = Empty

O est la lettre O ; ne va pas mettre le chiffre 0 (zéro) !

rhodo

rhodo Posté le 7 février, 04:45
par rhodo
0

Wow quelle réactivité !

Merci beaucoup de ta réponse ! Malheureusement, cela n'a pas réglé le problème :/

Je ne sais pas pourquoi mais le macro s'entête à me chnager toute la colonne P en additionnant toutes les valeurs de la colonne O les unes à la suite des autres.

Une idée de où ça pourrait venir ?


Merci d'avance,

Matt.VH Posté le 7 février, 09:40
par Matt.VH
0

@Matt. VH

------------------------------------------------------------------------------------------

dans la sub Init, il faut :

[M4:O52, M57:O105, M110:O128, M133:O152] = Empty

ceci afin de ne plus effacer en colonne P.

------------------------------------------------------------------------------------------

dans la sub WriteLig() :

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

A) il y a ces 2 lignes de code VBA :

c = IIf(p < 4, 13, 2)
With Cells(k, c)

rappel : c = IIf(p < 4, 132) est pareil que :
If p < 4 Then c = 13 Else c = 2

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

B) plus bas, il y a ces 3 lignes VBA :

With .Offset(, 3)
  .NumberFormat = fmt2: .Value = t(p)
End With

c'est ça qui écrit en colonne P (quand c = 13) ; mais attention :
ça écrit aussi en colonne E (quand c = 2) ; d'où :

1) SI tu veux NI écriture en P, NI écriture en E, alors supprime
entièrement les 3 lignes de code VBA
 du point B).

2) SI tu veux que ça n'écrive pas en colonne P (quand c = 13)
mais que ça continue d'écrire en colonne E (quand c = 2),
alors ajoute 2 lignes de code VBA comme suit :

If c = 2 Then
  With .Offset(, 3)
    .NumberFormat = fmt2: .Value = t(p)
  End With
End If

rhodo

rhodo Posté le 7 février, 15:55
par rhodo
0

Bonsoir Matt,

j'ai édité mon post du 7 février pour faire une réponse plus courte ;
si tu as des questions, n'hésite pas à demander.  :)

rhodo

rhodo Posté le 10 février, 19:20
par rhodo
0

ça a marché ! Merci beaucoup ! :)

Matt.VH Posté le 11 février, 19:22
par Matt.VH

Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :