Convertir une plage de cellules en une matrice a 2 dimensions
Lameblanche
Messages postés7Date d'inscriptionlundi 26 janvier 2009StatutMembreDernière intervention30 novembre 2013
-
30 nov. 2013 à 09:05
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
30 nov. 2013 à 13:15
Bonjour,
Je dois ecrire, comme ecris dans le titre, une fonction qui convertit une plage de cellules selectionnees sur excel en une matrice a 2 dimensions.
Dans tous les exemples que j'ai vu durant mes recherches, la plage est toujours connu, par exemple A1:D5, alors que la elle ne l'est pas, et je ne suis pas sur d'avoir bien compris comment inserer chaque valeur de la plage(i,j) dans la matrice, j'ai fais enormement d'essai mais ils rapportent tous des erreurs..
Function convertir(plage as range) as double() (l'entete ne peux pas etre change)
Dim Matrice
For i = 1 To plage.columns.count
For j = 1 To plage.rows.count
Set Matrice(i, j) = plage.Cells(i, j)
Next j
Next i
convertir = Matrice
End Function
A voir également:
Convertir une plage de cellules en une matrice a 2 dimensions
Lameblanche
Messages postés7Date d'inscriptionlundi 26 janvier 2009StatutMembreDernière intervention30 novembre 2013 30 nov. 2013 à 10:16
Deja, merci pour vos reponses,
J'avais vu pour Redim et Preserve que ca permet de redimensionner un tableau tout en gardant les valeurs a l'interieur mais j'avoue ne pas etre sur de comprendre en quoi ca met utile.
Et je me doute ucfoutu, j'ai d'ailleurs lu au moins un post ou tu intervenais mais j'arrive toujours pas a m'en sortir...
Ton exemple je sais va me donner le nombre de lignes et colonne, en l'occurence 1 et 3. J'ai donc changer les bornes de mes boucles de cette maniere:
Function convertir(plage) As Double()
Dim Matrice()
Matrice = Range(plage)
For i = 1 To UBound(Matrice, 1)
For j = 1 To UBound(Matrice, 2)
Set Matrice(i, j) = Range(plage).Cells(i, j)
Next j
Next i
convertir = Matrice
End Function
Mais ma fonction est sense etre des nombres (double) alors que ma matrice c'est du string non?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 30 nov. 2013 à 10:24
Que me racontes-tu ?
Matrice est un tableau de VARIANT.
Si ta plage contirent des doubles, les valeurs de matrice en seront également.
Fais donc ce petit test :
Mets des doubles dans les cellules de la plage A1:B2 et :
Dim matrice() matrice = Range("A1:B2") For i = 1 To UBound(matrice, 1) For j = 1 To UBound(matrice, 2) MsgBox matrice(i, j) & " " & TypeName(matrice(i, j)) Next Next
Vous n’avez pas trouvé la réponse que vous recherchez ?
Avec quel code ?
Mets-le ici, tel qu'il est (copier/coller).
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Lameblanche
Messages postés7Date d'inscriptionlundi 26 janvier 2009StatutMembreDernière intervention30 novembre 2013 30 nov. 2013 à 10:44
Ben en fait je suis pas sur de comprendre , en mettant juste:
matrice = Range(plage) si c'est suppose creer le tableau avec les valeurs bien place?
Et sinon, Plage c'est la selection de cellule que je fais sur excel, j'ai rempli les cellules B9 a D11 de nombres et j'essaie d'appeller la fonction pour voir ce que ca fait.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 30 nov. 2013 à 10:48
veux-tu bien, oui ou non) montré ce que je te demande ? (où et comment est définie Plage ? Par quel code ? Car sinon, plage n'est rigoureusement rien !)
C'est pas vrai !!!!! (je dois parler chinois !)
Tu dois normalement avoir DEUX lignes de code :
L'une, pour déclarer la variable Plage : Dim Plage as Range
L'autre, pour l'initialiser : Set Plage = ........
Montre-moi (comment faut-il le dire ?) CES DEUX LIGNES de ton code
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Bonne chance, alors ... Moi, je suis déjà trop âgé et j'ai mes limites, mes rigueurs, mes notions de base minimum, etc ...ami....
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend