Problème avec call

Résolu
eric2027 Messages postés 289 Date d'inscription   Statut Membre Dernière intervention   -  
eric2027 Messages postés 289 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour le Forum,

Je suis tombé sur ce post
sub abc
end sub
------------
sub def
end sub
------------
sub ghi
end sub
------------

Si tu veux exécuter à l'affilée les 3 procédures tu dois en créer une quatrième qui appelle les trois autres avec la fonction call. Exemple:

sub jkl
call abc
call def
call ghi
end sub


mais cela ne m'a pas donné le résultat escompté, j'ai un message qui me donne
erreur de compilation
sub ou fonction non défini

Pourriez me dire pourquoi ?


mon exemple :

Sub Supprimer_les_lignes_vides()

Range("a4:a65536").SpecialCells(xlCellTypeBlanks).EntireRow.Delete



Call proprietes
Range("a6:af100").Font.Size = 8
Range("a6:af100").Font.Name = "trebuchet MS"
Range("a6:af100").HorizontalAlignment = xlCenter
Range("a6:af100").VerticalAlignment = xlCenter
Range("a6:af100").Borders.Value =

Par avance merci pour vos réponses

Bien cordialement



7 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
bonjour
comme tu nous montres pas les lignes de la procédure "proprietes" .....
a moins que cette procédure soit la mise au format des cellules a6:af100, dance cas base toi sur ce petit exemple tout c...qui marche
Option Explicit
Sub essai()
Call coucou
MsgBox "bonsoir"
End Sub

Sub coucou()
MsgBox "bonjour"
End Sub

 Michel
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
bonjour, pourrais-tu partager ton exemple complet?
0
eric2027 Messages postés 289 Date d'inscription   Statut Membre Dernière intervention   6
 
Bonjour michel_m

C'était au départ c'était ça, 4 modules que je voudrais réunir en 1 parce que cela me fait 4 boutons, un peu galère

le code avec developpeur


Sub Supprimer_les_lignes_vides()

Range("a4:a65536").SpecialCells(xlCellTypeBlanks).EntireRow.Delete


Sub proprietes()
Range("a6:af100").Font.Size = 8
Range("a6:af100").Font.Name = "trebuchet MS"
Range("a6:af100").HorizontalAlignment = xlCenter
Range("a6:af100").VerticalAlignment = xlCenter
Range("a6:af100").Borders.Value = 1



Sub Modifie()
Dim Cel As Range
For Each Cel In Range("A6", Range("A6").End(xlDown))
If IsNumeric(Cel) Then
Cel.ClearContents
End If
Next Cel


Sub couper()

Range("A6:A100").Select
Selection.Cut
Range("A7").Select
ActiveSheet.Paste
End Sub

Voilà, si tu pouvais m'orienté vers la bonne marche à suivre ce serait cool

Merci
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
par exemple:
Sub Supprimer_les_lignes_vides()

Range("a4:a65536").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

End Sub

Sub proprietes()
Range("a6:af100").Font.Size = 8
Range("a6:af100").Font.Name = "trebuchet MS"
Range("a6:af100").HorizontalAlignment = xlCenter
Range("a6:af100").VerticalAlignment = xlCenter
Range("a6:af100").Borders.Value = 1
End Sub


Sub Modifie()
Dim Cel As Range
For Each Cel In Range("A6", Range("A6").End(xlDown))
If IsNumeric(Cel) Then
Cel.ClearContents
End If
Next Cel

End Sub
Sub couper()

Range("A6:A100").Select
Selection.Cut
Range("A7").Select
ActiveSheet.Paste
End Sub
Sub letout()
Call Supprimer_les_lignes_vides
Call proprietes
Call Modifie
Call couper
End Sub
0
eric2027 Messages postés 289 Date d'inscription   Statut Membre Dernière intervention   6
 
C 'est super de m'avoir orienté, mais il faut que je clique 2 fois sur le bouton et en plus cela coupe en a5 au lieu de a6
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314 > eric2027 Messages postés 289 Date d'inscription   Statut Membre Dernière intervention  
 
T'es sûr de l'ordre de tes macros ?

si on supprime des lignes au départ cela ne risque t 'il pas de tout fausser (A5 au lieu de A6) ? d'autre part, tu vides les cellules numériques dans la colonne A...
excuse moi mais je ne comprend pas ce que tu veux faire :-/

pour ma part et dans ton cas, je ne vois pas l'intérêt d'utiliser plusieurs codes...on utilise cette méthode pour appeler des macros paramétrées ou des bibliothèques perso.

au besoin
Mettre le classeur sans données confidentielles en pièce jointe sur « mon-partage.fr »
et faire un clic droit-coller le raccourci dans votre message

Dans l’attente
0
eric2027 Messages postés 289 Date d'inscription   Statut Membre Dernière intervention   6 > michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention  
 
voilà, dis moi si tu as accès à mon fichier c'est la première fois que j'utilise ce site


https://mon-partage.fr/f/avggOMzm/
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
post de ygbe détruit par erreur, excuses...

pourquoi a6:af100 ?
correspond à quoi ?
combien de lignes dans la réalité ?

il faut détruire les lignes avec 123 et mettre les 256 sur la ligne eric ?

pas très futé de mettre les m^mes noms et nombre surtout que la finalité est + importante

envoi pas sérieux :-(

sinon le code ne présente pas de difficulté
0
eric2027 Messages postés 289 Date d'inscription   Statut Membre Dernière intervention   6
 
Re

il faut détruire les lignes avec 123 et mettre les 256 sur la ligne eric ?

C'est tout a fait ça,
pourquoi a6:af100 ? : a6:af100 correspondant aujourd'hui à ma base, celle ci peut évolué bien sûr

correspond à quoi ? correspond au personnel

combien de lignes dans la réalité ? pour l'instant c'est 100 en espérant que plus tard, il y aura plus de personnel

Voilà les réponses à tes questions
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
OK, je regarde le match (rugby) et te propose un truc après
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eric2027 Messages postés 289 Date d'inscription   Statut Membre Dernière intervention   6
 
ok pas de soucis moi aussi je regarde, que c'est beau le rugby
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Quel Match mais l'arbitre aurait du siffler essai de pénalité

bon je rejoins Irlande-Angleterre en spèrant que les irlandais vont châtier l'Anglais :-D

proposition de code (unique)
Option Explicit
'----------------------------------
Sub eric2707()
Dim Derlig As Integer, T_in, Cptr As Integer, Col As Byte

Application.ScreenUpdating = False
With ActiveSheet
Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
T_in = .Range("A6:AF" & Derlig)
For Cptr = 1 To UBound(T_in) - 1
'If Cptr < 20 Then
If IsNumeric(T_in(Cptr + 1, 1)) Then T_in(Cptr + 1, 1) = ""
For Col = 2 To 30
T_in(Cptr, Col) = T_in(Cptr + 1, Col)
Next
'End If
Next
'restitution
.Range("A6:AF1000").Clear
With .Range("A6:AF" & Derlig)
.Value = T_in
.Font.Size = 8
.Font.Name = "trebuchet MS"
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Borders.Weight = xlThin
End With
.Range("A6:A" & Derlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
End Sub


a demain pour tes commentaires
0
eric2027 Messages postés 289 Date d'inscription   Statut Membre Dernière intervention   6
 
Je suis tout à fait d'accord toi, il y avait essai de pénalité mais je pense que l'arbitre attendait que les français fassent une faute, il y avait la famille royale mais si ça avait été le cas, ça aurait été un match truqué heureusement que les français ont été patient et n'ont pas fait de faute holala le scandale que ça aurait fait, les irlandais ont été pus intelligent que les anglais et je trouve que leur jeu est à leurs images, volontaires, solidaires et quel jeu et la cuillère de bois pour les italiens décidément, ils ne décollent pas

Ta macro est génial par contre quand j'ai l'ai mis avec un autre fichier, ça me beug au niveau de :

.Range("A6:A" & Derlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete, en jaune

et bizarrement toute seule cela fonctionne nickel

j'ai essayé de comprendre mais c'est le flou total pour moi.
Pourrais-tu me traduire les différences phases qui ont remplacé mon code

Je te remercie
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour,

Effectivement, je n'avais pas pensé au coup de la famille royale, surtout que l'arbitre était anglais...
Dans les pubs gallois, la tristesse d'avoir perdu a certainement été balayée à l'annonce de la défaite anglaise !!! (expérience vécue il y a quelques années) :o)

la macro commentée
Option Explicit
'----------------------------------
Sub Reorganiser_donnees()
Dim Derlig As Integer, T_in, Cptr As Integer, Col As Byte

'-----------------------------------initialisations
'fige le défilement de l'écran: confort visuel & rapidité
Application.ScreenUpdating = False

With ActiveSheet
'dernière ligne utilisée
Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
utilisation d 'une variable-tableau--> mise en mémoire Ram pour rapidité d'action (env 80x)
T_in = .Range("A6:AF" & Derlig)

'---------------------------------traitement
For Cptr = 1 To UBound(T_in) - 1
'si valeur numérique ligne dessous---> vide ligne dessous
If IsNumeric(T_in(Cptr + 1, 1)) Then T_in(Cptr + 1, 1) = ""
'remplissage de ligne dans T_in
For Col = 2 To 30
T_in(Cptr, Col) = T_in(Cptr + 1, Col) 'cptr+1: transfert ligne du dessous
Next
Next

'------------------------------------------restitution
.Range("A6:AF1000").Clear 'efface tableau initial
With .Range("A6:AF" & Derlig)
.Value = T_in ' restitution de T_in
.Font.Size = 8
.Font.Name = "trebuchet MS"
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.Borders.Weight = xlThin
End With
'destruction lignes vides
.Range("A6:A" & Derlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
End Sub


0
eric2027 Messages postés 289 Date d'inscription   Statut Membre Dernière intervention   6
 
Je te remercie pour tout ton savoir, je vais disséquer tout ça, je crois savoir pourquoi ça beug, j'ai mis ta macro avec un fichier qui en a déjà une et ça rentre en conflit, mais c'est pas grave je ferais 2 manip au lieu d'une.
Un grand merci à toi
Cordialement
eric2027
0