XL pour MAC variable de type range et matrice

Delorme

XLDnaute Occasionnel
Bonjour à tous
Passionne d'excel , je vais souvent sur YouTube pour voir les tutos
je suis tombe sur un titre: (la variable de type range en vba excel),voulant expliquer la variable de type Range
j'ai donc recopie fichier et macro
Quand je fais pas à pas dans la macro, la variable MC est vide
Dans le tutoriel, l'auteur fait référence a : matrice
il y a t'il un tableau à declarer ou simplement fait il état des cellules (C4:G15)
Je voudrais bien comprendre sa démarche, ce qu'il veut expliquer, simplement pour savoir

Voici fichier et macro

Merci

Michel
 

Pièces jointes

  • matrice.xlsm
    17.8 KB · Affichages: 4

vgendron

XLDnaute Barbatruc
VB:
Option Explicit 'oblige ˆ declarer les variables
Sub matrice()
Dim MC As Range, MC1 As Range, MC2 As Range
Dim X As Integer
Dim S As String
Dim col As Integer, lig As Integer
Dim couleur As Long
Dim Nblignes As Integer
Dim NBcolonnes As Integer
Dim i As Integer, j As Integer

Set MC = Range("C4") 'affecte la cellule C4 à la variable MC
X = MC.Value 'X prend la valeur de la cellule C4
S = MC.Address 'S prend l'adresse de la varialbe MC ===> C4 ==> $C$4 en référence absolue
lig = MC.Row 'lig récupère la ligne de MC
col = MC.Column 'col prend le numéro de colonne de MC (1 = ColA, 2=ColB....
X = MC.Offset(2, 3).Value 'X prend la valeur de la cellule située 2 lignes SOUS MC et 3 colones à Droite de MC ==>F6
couleur = MC.Interior.Color 'Couleur prend un nombre qui correspond à la couleur de la cellule MC

Set MC1 = MC.End(xlDown) 'à partir de MC, on se décale vers le bas (équivalent au double clic sur la bordure inférieure de C4==> arrive en C6
Set MC2 = MC.End(xlDown).End(xlToRight) ' àpartir de MC, on va, vers le bas puis vers la droite==> arrive en G6

Nblignes = MC2.Row - MC.Row + 1 'calcule le nombre de lignes du tableau: numéro de ligne de MC2 (=G6 ==> 6) MOINS le numro de ligne de MC (=C4 ==> 4) + 1
NBcolonnes = MC2.Column - MC.Column + 1 'meme calcul pour le nombre de colonne

For i = 0 To Nblignes - 1 'pour le compteur i qui va de 0 à nblignes-1
    For j = 0 To NBcolonnes - 1 'pour le compteur j qui va de 0 à Nbcolonnes -1
        X = MC.Offset(i, j).Value 'la variable X prend la valeur de la cellule située i lignes SOUS mc et j colonnes à droite de MC===> MAIS du coup.. la varialbe est modifiée à chaque tour de boucle;. mais on n'en fait rien
    Next j
Next i
'===> bilan, cette macro ne sert strictement à rien si il n'y a aucun des commentaires que je viens de te faire
End Sub
 

Delorme

XLDnaute Occasionnel
Bonjour

Merci de votre reponse et commentaires

C'est moi qui est donne le nom de matrice au fichier

je voulais savoir la définition de matrice en vba?

J'ai bien rectifie l'erreur que vous m'avez signalée

Mais quand je fais pas a pas dans la macro, a la ligne : Set MC = Range("C4"), MC n'a aucune valeur alors que sur la video tuto,MC prend la valeur de 1
Je trouve que votre site est tres bien et à beaucoup de questions, j'ai toujours eu les réponses souhaitées
Michel
 

Dranreb

XLDnaute Barbatruc
Bonjour.
MC est un Range. Alors si on l'initialise de telle sorte qu'il représente la cellule C4 de la feuille active, il aura une propriété Value portant la valeur de cette cellule. Dans un classeur ça peut êtrre 1, dans un autre ça peut être Empty.
 

vgendron

XLDnaute Barbatruc
en PJ ton fichier avec la macro

1) c'est mieux de mettre les macros dans un module standard
2)

lance la macro en cliquant sur le bouton (pas besoin de F8 pour le pas à pas

VB:
Option Explicit 'oblige ˆ declarer les variables
Sub matrice()
Dim MC As Range, MC1 As Range, MC2 As Range
Dim X As Integer
Dim S As String
Dim col As Integer, lig As Integer
Dim couleur As Long
Dim Nblignes As Integer
Dim NBcolonnes As Integer
Dim i As Integer, j As Integer

Set MC = Range("C4") 'affecte la cellule C4 à la variable MC
X = MC.Value 'X prend la valeur de la cellule C4
MsgBox "La valeur dans la range C4 est: " & X
S = MC.Address 'S prend l'adresse de la varialbe MC ===> C4 ==> $C$4 en référence absolue
MsgBox "l'adresse de MC est: " & S

lig = MC.Row 'lig récupère la ligne de MC
col = MC.Column 'col prend le numéro de colonne de MC (1 = ColA, 2=ColB....
X = MC.Offset(2, 3).Value 'X prend la valeur de la cellule située 2 lignes SOUS MC et 3 colones à Droite de MC ==>F6
MsgBox "La range MC a pour numéro de ligne et de colonne: " & lig & " / " & col


couleur = MC.Interior.Color 'Couleur prend un nombre qui correspond à la couleur de la cellule MC
MsgBox "la couleur de MC est:" & couleur

Set MC1 = MC.End(xlDown) 'à partir de MC, on se décale vers le bas (équivalent au double clic sur la bordure inférieure de C4==> arrive en C6
Set MC2 = MC.End(xlDown).End(xlToRight) ' àpartir de MC, on va, vers le bas puis vers la droite==> arrive en G6

Nblignes = MC2.Row - MC.Row + 1 'calcule le nombre de lignes du tableau: numéro de ligne de MC2 (=G6 ==> 6) MOINS le numro de ligne de MC (=C4 ==> 4) + 1
NBcolonnes = MC2.Column - MC.Column + 1 'meme calcul pour le nombre de colonne
MsgBox "la plage de données contient: " & Nblignes & " lignes et " & NBcolonnes & " colonnes"

For i = 0 To Nblignes - 1 'pour le compteur i qui va de 0 à nblignes-1
    For j = 0 To NBcolonnes - 1 'pour le compteur j qui va de 0 à Nbcolonnes -1
        X = MC.Offset(i, j).Value 'la variable X prend la valeur de la cellule située i lignes SOUS mc et j colonnes à droite de MC===> MAIS du coup.. la varialbe est modifiée à chaque tour de boucle;. mais on n'en fait rien
    Next j
Next i
'===> bilan, cette macro ne sert strictement à rien si il n'y a aucun des commentaires que je viens de te faire
End Sub
 

Pièces jointes

  • matrice.xlsm
    20.4 KB · Affichages: 2

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 182
dernier inscrit
moutassim.amine