"Range" variable dans macro Exce

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. Contributeur
    OK, Merci pour ce renseignement précieux
    Bon dimanche
    1. Contributeur
      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.
      1. 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
    2. 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.
      1. Contributeur
        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")
        1. Contributeur
          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))
          1. 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.