Problème avec call

Résolu
eric2027 Messages postés 296 Statut Membre -  
eric2027 Messages postés 296 Statut Membre -
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

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      bonjour, pourrais-tu partager ton exemple complet?
      0
    2. eric2027 Messages postés 296 Statut Membre 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
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    1. eric2027 Messages postés 296 Statut Membre 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
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > eric2027 Messages postés 296 Statut Membre
         
        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
      2. eric2027 Messages postés 296 Statut Membre 6 > michel_m Messages postés 18903 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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  4. eric2027 Messages postés 296 Statut Membre 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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      OK, je regarde le match (rugby) et te propose un truc après
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eric2027 Messages postés 296 Statut Membre 6
     
    ok pas de soucis moi aussi je regarde, que c'est beau le rugby
    0
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. eric2027 Messages postés 296 Statut Membre 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
  8. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. eric2027 Messages postés 296 Statut Membre 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