Excel macro cells et range

Bonjour,
Il est des fois où on peut indifféremment écrire Cells ou Range pour désigner un cellule ou son contenu... et il est des fois où ce n'est pas vrai. Je ne connais pa les nuances.
Si quelqu'un peut m"éclairer. .. Merci
Configuration: Windows XP Internet Explorer 6.0

6 réponses

  1. Range peut faire référence à une seule cellule ou plusieurs cellules tandis que Cells ne fait référence qu'à une seule cellule

    Exemple pour sélectionner la cellule B5

    tu peux écrire:

    Range.("B5").Select
    'ou
    Cells(5, 2).Select 'ce qui correspond à la cellule de la 5éme ligne et 2éme colonne

    'ou encore plus simplement
    [B5].select

    7
    1. Contributeur
      Salut Mike
      [B5].select

      les crochets entourant B5 sont l'abréviation de la fonction évaluate et devrait être réservée pour utiliser VBA avec des fonctions excel style macro-complémentaires où worksheetfunction ne fonctionne pas et avec des formules matricielles mais avec les crochets, VBA considère qu'il s'agit d'une formule matricielle

      par exemple la fonction nb.jours ouvres(A1;B1)
      donnera en vba
      lavar=[workday(A1,B1)]

      mais tu es obligé d'utiliser evaluate (prise de tête) si un des paramêtres est une variable
      nbre = 50
      dep = CLng(Range("A1"))
      lavar= Evaluate("workday(" & dep & "," & nbre & ")")

      donc, ce crochet est mis plutôt par le syndrome du poil dans la main: je l'utilise donc souvent...

      mais je n'ai jamais résolu des matricielles avec evaluate...
      source
      http://xcell05.free.fr/pages/prog/accvba.htm#Evaluate
      1
      1. Contributeur
        Bonjour,
        tu écris:
        et il est des fois où ce n'est pas vrai

        Je ne crois pas mais si tu as rencontré le cas, dis le ca interressera tt le monde...

        généralement, on utilise cells dans des boucles car il est plus élégant que Range

        for i=1 to 100
            for j=3 to 10
                tavar=cells(i,j)
                tavar= range(j & ":" & i)

        mais les 2 écritures fonctionnent

        pour désigner un cellule ou son contenu.
        range ou cells désignent toujours une adresse et la propriété value est la propriété par défaut
        Il y a des des procédures où on est pratiquement obligé de préciser que l'on travaille sur le contenu et uniquement sur le contenu. on écrit alors range("A1").value

        pour te rendre compte écris quelque chose dans A1 puis cette macro
        sub test()
        mavar=range("A1")
        marvar =range("A1").value
        end sub

        et met un espion sur ma var (débogage-ajouter un espion)
        et lance la macro en pas à pas (F8)

        0
        1. Contributeur
          Re
          sur post 2 lire:
          tavar=range(j & i)
          au lieu de
          tavar= range(j & ":" & i) !!!

          excusez moi
          0
          1. Bonjour et merci à vous deux,
            Je ne pige pas tout, (j"ai commencé à mettre mon nez dans l'informatique à 55 balais, et ça fait longtemps), mais je grapille dans vos courriers des enseignements intéressants.
            Toutefois,
            Quelle différence de signification entre Range(j & ":" & i) et Range(j & i) ?
            Que signifie CLng(Range(A1))?
            Merci.
            0
        2. Re,

          Emporté par l'élan, il en est de même pour moi

          Range.("B5").Select

          il convient de supprimer le point après Range
          Range("B5").Select

          Pour répondre à la pertinente remarque de Michel_m concernant la référence de cellule entre crochet, c’était pour compléter la demande qu’il était possible de rencontrer Range, Cells mais également des raccourcis. Et pour ma part avec l’âge je deviens de plus en plus fainéant et use de ces fonctions.
          Par contre comme Michel_m l’a souligné, concernant cette fin de phrase
          et il est des fois où ce n'est pas vrai

          Pour ma part je serai curieux de savoir, en informatique c’est vrai ou faux mais des fois ou peut être je ne vois pas
          0
          1. Contributeur
            Bonjour,
            Quelle différence de signification entre Range(j & ":" & i) et Range(j & i) ?
            Range(j & ":" & i) était une erreur de ma part

            Que signifie CLng(Range(A1))?
            On transforme la date en nombre (un peu comme dans format nombre tu demandais "standard"

            j"ai commencé à mettre mon nez dans l'informatique à 55 balais, et ça fait longtemps
            je ne suis pas tout jeune non plus et je crois que c'est la m^me chose pour Mike !...

            Excel entretient les vieilles neurones ;-)
            0