"Range" variable dans macro Exce

Fermé
Capricorne3 Messages postés 542 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 4 juin 2020 - 29 nov. 2008 à 14:46
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 30 nov. 2008 à 13:07
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.
A voir également:

5 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
29 nov. 2008 à 15:39
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
Capricorne3 Messages postés 542 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 4 juin 2020 24
29 nov. 2008 à 17:18
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
29 nov. 2008 à 18:37
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
Capricorne3 Messages postés 542 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 4 juin 2020 24
29 nov. 2008 à 19:27
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
30 nov. 2008 à 10:40
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
Capricorne3 Messages postés 542 Date d'inscription mardi 3 octobre 2006 Statut Membre Dernière intervention 4 juin 2020 24
30 nov. 2008 à 13:02
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

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

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
30 nov. 2008 à 13:07
OK, Merci pour ce renseignement précieux
Bon dimanche
0