Macro appellée = pb

S

stef51

Guest
Soirbon le forum,
Voila j'ai une macro qui marche utilisée seule !
Mais des lors que je l'utilise depuis une autre en faisant un appel style
Call ranger
end sub
Ca coince ?!!
avez vous une soluce ?
Merci


Private lig As Long, lig2 As Long

Sub ranger()
Dim cesure As Byte
Dim numero As String, client As String
'séparation numero et nom client
client = Cells(lig, 5)
cesure = Application.Search("-", client)
numero = Left(client, cesure - 1)
client = Right(client, Len(client) - cesure)

Range(Cells(lig + 5, 1), Cells(lig2 - 2, 1)) = numero
Range(Cells(lig + 5, 2), Cells(lig2 - 2, 2)) = client

End Sub
Sub affecter()
Dim cellule As Range
Dim dep_address As String

Columns("A:B").ClearContents
Application.ScreenUpdating = False

'd'après aide MS sur find
With ActiveSheet.Range("E1:E65536")
Set cellule = .Find("*", LookIn:=xlValues)
If Not cellule Is Nothing Then
dep_address = cellule.Address
Do
lig = cellule.Row
Set cellule = .FindNext(cellule)
lig2 = cellule.Row
If lig2 < lig Then
lig2 = Range("D65536").End(xlUp).Row + 2
End If
ranger
Loop While Not cellule Is Nothing And cellule.Address <> dep_address
End If
End With
End Sub
 
M

Michel_M

Guest
Bonsoir,

Pourtant ca marchait ma bidouille...

pourrais tu (demain en fin d'aprèm...) envoyer une PJ pour qu'on regarde de plus près le pb.

Marque quel est le message d'erreur et à quelle ligne ca coince, ca me fera gagner du temps.

A+

Michel
 
Y

Yeahou

Guest
Bonjour stef51, toto, michel, le forum

lig et lig2 sont private ce qui pose problème si tes macros ne sont pas dans le même module ou si lig et lig2 sont déclarées dans un autre module, utilise plutôt un dim ou public.

Cordialement, A+
 
S

stef51

Guest
Bonsoir à tous
Merci de vos reponses
La bidouille de Michel marche à merveille mais pas si elle est associée
Voir fichier joint
Onglet 1 ok avec lancement macro affecter
Onglet 2 pb avec lancement macro 2
Merci de votre aide
 

Pièces jointes

  • mac.ZIP
    12.2 KB · Affichages: 16
M

Michel_M

Guest
salut Steph, Yeahou,

Ci joint macro modifiée.

Private lig etc étaient à indiquer en haut de page comme Yeahou l'avait remarqué

La macro "ranger" ( "call" est inutile)est une sous macro appelée dans la recherche "wih activesheet etc

j'ai donc recopié celle ci dand ta macro2

qui va affecter entre autres les valeurs lig et lig2.

Pour répondre à ta question de l'autre jour, la fonction find recherche la valeur demandée APRES la première cellule : il faut donc partir de la cellule au dessus d'où obligation d'avoir "E1" vide; tu peux écrire des trucs de A à D et F à IV.

Bon WE

Michel
 

Pièces jointes

  • macroB_xld.zip
    10.9 KB · Affichages: 14
S

stef51

Guest
Bonjour à tous,
Argh! Michel_M !
Mea maxima culpa !
Je me suis mal "expressionné", dans mon exemple simplifié le"call" n'est pas anodin car en réalité ta macro arrive en troisiéme position sur cinq macros pour venir à bout de mon traitement de données.
Je doit donc trouver le moyen de l'appeler son tour venu
As tu une idée ?
merci
 
S

stef51

Guest
Bonjour à tous
Une autre façon peut être de s'en sortir serait de modifier l'ecriture de ladite macro en un seul pavé de façon a ce qu'elle commence par
Sub
et se termine par End sub
Cela sort de mes competences
------
Private lig As Long, lig2 As Long

Sub ranger()
Dim cesure As Byte
Dim numero As String, client As String
client = Cells(lig, 5)
cesure = Application.Search("-", client)
numero = Left(client, cesure - 1)
client = Right(client, Len(client) - cesure)
Range(Cells(lig + 5, 1), Cells(lig2 - 2, 1)) = numero
Range(Cells(lig + 5, 2), Cells(lig2 - 2, 2)) = client
End Sub
Sub affecter()
Dim cellule As Range
Dim dep_address As String
Columns("A:B").ClearContents
Application.ScreenUpdating = False
With ActiveSheet.Range("E1:E65536")
Set cellule = .Find("*", LookIn:=xlValues)
If Not cellule Is Nothing Then
dep_address = cellule.Address
Do
lig = cellule.Row
Set cellule = .FindNext(cellule)
lig2 = cellule.Row
If lig2 < lig Then
lig2 = Range("D65536").End(xlUp).Row + 2
End If
ranger
Loop While Not cellule Is Nothing And cellule.Address <> dep_address
End If
End With
End Sub
Merci
 

Statistiques des forums

Discussions
312 331
Messages
2 087 354
Membres
103 528
dernier inscrit
hplus