CurrentRegion ou CurrentArray?

  • Initiateur de la discussion Initiateur de la discussion smotty
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

smotty

XLDnaute Occasionnel
Bonjour à tous,

J'ai besoin d'aide pour améliorer ma culture d'Excel.

J'ai l'abitude d'utiliser currentRegion et je viens de voir dans l'aide d'Excel qu'il y avait également un CurrentArray.

Les 2 retournant un objet Range, quelqu'un peut-il m'expliquer la différence entre les 2?

Merci d'avance

smotty
 
Re : CurrentRegion ou CurrentArray?

Salut Smotty 🙂,
D'après l'aide, CurrentRegion renvoie la zone autour de la cellule en s'arrêtant aux délimitations par ligne vierge et colonne vierge.
CurrentArray, lui, renvoie la zone du tableau (il faut un tableau défini) dont la cellule fait partie.
J'ai fait des test mais CurrentArray génère une erreur chez moi, même avec un tableau défini 😱...
Bonne journée 😎
 
Re : CurrentRegion ou CurrentArray?

Re 🙂,
Un petit tour dans l'aide de VisualBasic, et hop ! un petit classeur de test.
Belle réponse en forme d'enigme 😉.
Mauvaise traduction ou mauvaise compréhension, l'aide 2007 et 2010 ne fournissent que le nom de tableau (zone nommée, entre autre) et non le terme de matricielle 😱... L'aide de 2003 est peut-être plus claire à ce sujet, c'est bizarre, ça me rappelle des posts pas très lointains 🙄...
Donc effectivement, après une légère adaptation du code (je suis un visuel, désolé 😱), effectivement, CurrentArray représente les matrices de la feuille 😱.
Pour ceux qui sont visuels :
le code légèrement modifié
Code:
Private Sub toto(Optional titre$ = "")
Dim tmp$
m = PasContour(Range("A1:M20"))
   tmp = "--:--"
   On Error Resume Next
   tmp = ActiveCell.CurrentArray.Address
   ActiveCell.CurrentArray.Interior.ColorIndex = 7
   On Error GoTo 0
   ActiveCell.Interior.ColorIndex = 6
   n = Contour(ActiveCell.CurrentRegion)
   MsgBox "Selection : " & Selection.Address & vbLf & String(54, "_") & vbLf & vbLf & _
      "ActiveCell : " & ActiveCell.Address & vbLf & _
      "   CurrentArray : " & tmp & vbLf & _
      "   CurrentRegion : " & ActiveCell.CurrentRegion.Address, , titre
   Feuil1.Cells.Interior.ColorIndex = xlNone
End Sub
ainsi que les 2 fonctions qui vont avec
Code:
Function Contour(Plage As Range)
With Plage
    With .Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .Weight = xlMedium
    End With
    With .Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .Weight = xlMedium
    End With
    With .Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .Weight = xlMedium
    End With
    With .Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .Weight = xlMedium
    End With
End With
End Function
Function PasContour(Plage As Range)
With Plage
    .Borders(xlEdgeLeft).LineStyle = xlNone
    .Borders(xlEdgeTop).LineStyle = xlNone
    .Borders(xlEdgeBottom).LineStyle = xlNone
    .Borders(xlEdgeRight).LineStyle = xlNone
    .Borders(xlInsideVertical).LineStyle = xlNone
    .Borders(xlInsideHorizontal).LineStyle = xlNone
End With
End Function
Merci Roger de cet éclaircissement 😉.
Bonne soirée 😎
 
Dernière édition:
Re : CurrentRegion ou CurrentArray?

Bonjour JNP, ROGER2327,

Merci de vous être investis autant dans cette explication. C'est beaucoup plus clair.

Effectivement l'aide VBA n'est pas claire du tout à ce sujet (du moins sur 2007 quasiment identique pour CurrentArray que CurrentRegion).

J'étais à mille lieu d'imaginer ces explications.

Merci beaucoup

smotty
 
Re : CurrentRegion ou CurrentArray?

Re...
(...)
Peut-on en conclure que les 2 ne s'intéressent qu'à la cellule active, et non à l'ensemble de la sélection ?
(...)
Exactement.
Une expérience éclairante est d'exécuter cette procédure pas à pas dans le classeur précédent :
Code:
[COLOR="DarkSlateGray"][B]Sub tata()
Dim r
   Set r = Range("A4:C3")
   r.Select
   r.CurrentRegion.Select
   r.CurrentArray.Select
   Set r = Range("C3,A4:C3")
   r.Select
   r.CurrentRegion.Select
   r.CurrentArray.Select
End Sub[/B][/COLOR]
ROGER2327
#3946


Lundi 9 Tatane 137 (Saints Ecrase-Merdre, sectateurs, SQ)
4 Thermidor An CCXVIII
2010-W29-4T00:00:46Z
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour