"Range" variable dans macro Exce

Capricorne3 Messages postés 554 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Après de jours et des jours de recherche sans succès, j'appelle à l'aide la Communauté "Comment çà marche".

PROBLEME :

Une cellule d'un tableau Excel contient le nombre N1, par exemple 6, la cellule est nommée Pre
Une autre cellule du même tableau contient le nombre N2, par exemple 45, la cellule est nommée Der
(Bien sûr, N2 > N1).

Une macro de tri classique, de la colonne C entre lignes 6 et 45, comporte entre autres : Range("C6:C45")

Comment remplacer le 6 et le 45 de la macro par respectivement "Nombre contenu dans Pre, et ,nombre contenu dans Der ?

Merci beaucoup à qui saura me dépanner.

Nota : j'en suis encore à Excel 2000, mais j'espère que çà ne pertubera pas celui qui pourra m'aider.
--
Cordialement,
Capricorne3
Configuration: Windows XP
Internet Explorer 6.0

5 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,
    ..."Après de jours et des jours de recherche sans succès"... T'es sûr ?

    Dim N1 As Long, N2 As Long
    Dim plage As Range
    N1 = Range("pre")
    N2 = Range("der")
    If N1 >= N2 Then
        MsgBox " Erreur de saisie", vbCritical
        Exit Sub
    End If
     Set plage = Range(Cells(N1, 3), Cells(N2, 3))
    0
    1. Capricorne3 Messages postés 554 Statut Membre 45
       
      Bonsoir Michel,

      Quelle chance j'ai d'avoir une réponse, et si vite.

      Avex mes excuses de néophyte sous Excel, en train de migrer sous Excel des applications vieilles de 20 ans sous Multiplan, je dois avouer que je ne sais pas à quel endroit de la macro "standard" de tri colonne C de N1 à N2 incorporer (substituer) la séquence indiquée.

      Actuellement, j'ai d'un côté votre réponse et de l'autre la macro classique :

      Sub Macro3()
      '
      ' Macro3 Macro
      ' Macro enregistrée le 27/11/2008 par R.T.
      '
      Range("C8:C17").Select
      Selection.Sort Key1:=Range("C8"), Order1:=xlAscending, Header:=xlGuess, _
      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
      End Sub


      Je dois avouer que je ne sais pas que faire. Mes 75 ans ne m'aident pas, il est vrai.

      Aurez-vous le temps et la patience de me rédiger la macro modifiée ?

      Merci d'avance.

      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonsoir Capricorne,

    Multiplan ca nous rajeunit pas! j'ai débuté par multiplan3 1 4, framework, dbase3, le tour sous MSDOS 3 en 88...

    Pour faire ta macro, tu as utilisé l'enregistreur de macro: il mémorise tout ce que tu fais dans le classeur et quand tu utilises un assistant comme le tri, il écrit aussi toutes les param^tres facultatifs, cad les options non par défaut.

    Dans ton cas tu veux mettre des variables N1, N2 pour délimiter ta zone ce qui est impossible à) faire avec les formules Excel donc impossible aussi avec l'enregistreur.

    Il faut utiliser le VBA (Visual Basic Application) descendant du Q ou GWBasic qui fit les beaux jours des TO7!

    , Order1:=xlAscending,oici la macro VBA commentée

    Sub trier()
    'déclaration des variables
    Dim N1 As Long, N2 As Long
    'affecte à N1 & N2 la valeur saisie dans la cellule (range) pre et der
    N1 = Range("pre")
    N2 = Range("der")
    ' On vérifie que N2 est sup. à N1 (if...then=  si...alors)
    If N1 >= N2 Then
        'dans une boite message on écrit qu'il y a erreur avec le symbole "croix sur fond rouge)"
        MsgBox " Erreur de saisie", vbCritical
        'on quitte la macro
        Exit Sub
    'fin du si
    End If
    'plage de cellule commencant à la cellule (cells: autre syntaxe pour désigner une cellule) ligne N1 _
    colonneC (C=3) et seterminant à la cellule ligne N2, colonneC
    'et on trie (sort) a partir de la cellule de départ dans l'ordre croissant (xlascending) _
    (les param^tres supprimés correspondent à des options _
    facultatives autres que celles par défaut
     Range(Cells(N1, 3), Cells(N2, 3)).Sort Key1:=Cells(N1, 3), Order1:=xlAscending
     
    End Sub
    


    A copier-coller sous ta macro
    Pour comprendre
    tu cliques dans la macro et tu appuies sur F8 pour progresser en pas à pas; par exemple quand tu seras sur la ligne où on affecte N2, si tu passes la souris sans cliquer sur N1 tu verras la valeur (8 dans la cellule "pre")
    0
  3. Capricorne3 Messages postés 554 Statut Membre 45
     
    Coucou,

    Ou là là, serions-nous de la même génération, ou à peu près ?
    Mes débuts avec Multiplan 3, sous DOS 3.20, datent de 1988. J'ai encore de nombreuses applications sous Multiplan, et si je claque avant de les migrer sous Excel, ma fille ne saura pas aider sa mère.
    Pour les applications sous dBase 3, que je maîtrise toujours plus que bien, il n'y a pas de problème : les programmes sont faits pour ne jamais se planter.

    J'essaie çà demain car, ce soir, une jambe dans un plâtre fait qu'à 19:00 je suis naz.

    Aimerais ne pas vous perdre de vue pour problème éventuel ultérieur.
    Mon e-mail = traray@free.fr En vous promettant de n'en user qu'avec parcimonie, le vôtre constituerait une précieuse bouée de sauvetage.
    0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour Capricorne,
    Je t'ai mis un mot en message perso.

    Pour t'aider dans ton apprentissage de VBA, tu as cet excellent site très décontracté et pédagogique:
    www.info-3000.com
    Ancien formateur, je conseillais à mes stagiaires adultes (20 à 56 ans) de le consulter hors temps de formation et ceux qui ont suivi ce conseil ont vivement apprécié.

    Pourrais tu nous expliquer, sur le forum, comment passes-tu de multiplan à Excel 2000 (je crois qu'il y a une histoire d'extension .SLK (sylk?) cela serait utile à tous.
    0
    1. Capricorne3 Messages postés 554 Statut Membre 45
       
      Coucou,

      Merci beaucoup.

      Ci-dessous, la méthode que je connais pour passer d'une feuille Multiplan à une feuille Excel.

      S'il y a une formule dans une cellule du Multiplan, c'est sa valeur à l'instant t et non la formule qui sera exportée.

      =======

      . Pour convertir en Excel un fichier Multiplan :
      - sous Multiplan :
      . sélectionner zone à convertir en Excel
      . "Sortie", "Fichier", donner un nom en .txt
      - avec Word :
      . ouvrir le .txt (a priori, il est dans C:\MP)
      . sélectionner la zone à convertir
      . "Edition", "Copier"
      - Ouvrir Excel
      . cg sur cellule A1
      . "Edition", "Coller"
      . régler la largeur des colonnes pour correspondre au texte
      => . cg sur A (en-tête 1ère colonne)
      . cg "Données, cg "Convertir"
      . cocher "Largeur fixe"
      . cg "Suivant"
      . cg "Suivant"
      . cocher "Texte"
      . cg "Terminer"
      . recommencer à => pour chacune des autres colonnes B, C, ...

      -=================-
      Cordialement,
      Capricorne3
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    OK, Merci pour ce renseignement précieux
    Bon dimanche
    0