Macro

  • Initiateur de la discussion Famu
  • Date de début
F

Famu

Guest
Comment faire pour qu'une macro prenne en considération la valeur d'une cellule et non son adresse comme si après ?

Range("B4").Select
 
@

@+Thierry

Guest
Bonjour Famu, Linda, le Forum

En premier lieu Famu, je te conseille un petit tour vers le lien ci-dessous, qui te permettra de prendre en considération notre Charte...



Ensuite, je pense que Linda n'a pas bien saisi ta question, puisque l'enregistreur écrira la même chose que ce que tu proposé "Range("B4").Select"

Non pour retourner la valeur d'un cellule il suffit de faire ceci :

Sub Famu1()
MsgBox ActiveCell.Value
End Sub

Ou encore...
Sub Famu2()
MsgBox Range("B4").Value
End Sub

Ou Encore...
Sub Famu3()
Range("B10") = Range("B4")
MsgBox Range("B10") & " " & Range("B4")
End Sub


On notera qu'il n'est pas forcément obligatoire d'indiquer "Value" puisque c'est la propriété par défaut d'un "Object Range", mais je conseille tout de même de l'écrire pour les débutants, ça permets de se familiariser avec les différentes propriétés de chaque objet.

Bon Appétit
 
F

Famu

Guest
C'est OK, ça marche !
Voici une partie de ma macro où "val" est la valeur de la cellule active.

Dim val As String
val = ActiveCell.Value
Windows(val).Activate
Sheets("OPERAT.").Select

etc...

Merci encore,
Famu.
 
@

@+Thierry

Guest
Re Bonjour Famu

Et dans le cas où tu voudrais faire quelque chose de plus abouti....

Sub Testing()
Dim WB As Workbook
Dim WS As Worksheet
Dim TheBookName As String, TheSheetName As String

TheBookName = ActiveCell.Value
TheSheetName = ActiveCell.Offset(0, 1)

If Right(TheBookName, 4) <> ".xls" Then TheBookName = TheBookName & ".xls"

On Error GoTo ErrorHandler1
Set WB = Workbooks(TheBookName)

On Error GoTo ErrorHandler2
Set WS = WB.Worksheets(TheSheetName)
WS.Activate

Exit Sub

ErrorHandler1:
If Err = 9 Then
MsgBox ("le Fichier " & TheBookName & " n'est pas ouvert")
End If
Exit Sub

ErrorHandler2:
If Err = 9 Then
MsgBox "La feuille " & TheSheetName & " n'existe pas dans le classeur " & TheBookName
End If

End Sub

Explication :
Ce code va tenter d'activer le Classeur dont le nom se trouve dans la cellule active, si ce nom ne contient pas l'extention ".xls", il sera automatiquement ajouté.
Ce code par ailleurs va également tenter d'activer la feuille dont le nom se trouve dans la cellule à droite de la cellule active.

Si ces deux cellules ne retournent pas de valeur la procédure est stoppée.

En plus j'ai ajouté deux gestions d'erreurs :
1) si le nom en cellule active ne retourne pas un nom de classeur ouvert.
2) si le nom à droite de la cellule active ne retourne pas un nom de feuille valide dans le dit classeur.

En espérant t'éclairer, car le "Windows(val).Activate" n'est pas vraiment interressant pour travailler en multi-classeurs ouverts.

Bon Aprèm
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 049
Membres
104 012
dernier inscrit
baffyt2