Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Optimisation remplacement [ Algorithme / Divers ] (XGuarden)

jeudi 4 janvier 2007 à 20:35:53 | Optimisation remplacement

XGuarden

Bonjour cette fonction m'apparait d'Etre bien longue comparer a ce quelle fait:

    Friend Function ConvertToStringArray(ByVal values As System.Array) As String()
        Dim theArray As String() = New String(values.Length - 1) {}
        Dim i As Integer = 1
        Do While i <= values.Length
            If values.GetValue(1, i) Is Nothing Then
                theArray(i - 1) = ""
            Else
                theArray(i - 1) = CStr(values.GetValue(1, i).ToString())
            End If
            i += 1
        Loop

        Return theArray
    End Function

je l'utilise dans mon programme comme ceci:
Dim theArray As String() = modExcel.ConvertToStringArray(CType(range.Cells.Value, System.Array))

JE crois qu'il doit y avoir un meilleur moyen de faire ouquelque chose de déja fait pour cela......
QU'aez-vous à me proposer?

jeudi 4 janvier 2007 à 21:51:31 | Re : Optimisation remplacement

Willi

Membre Club Administrateur CodeS-SourceS
Bonsoir,
Que fais cette fonction ? Sous quelle version de vb es-tu ?

jeudi 4 janvier 2007 à 21:55:05 | Re : Optimisation remplacement

Charles Racaud

Membre Club
Salut,

Déja, tu peut remplacer la boucle while par une boucle for.
Mais comme l'as dit Willi, indique nous quel est son but.



__________
Kenji


jeudi 4 janvier 2007 à 23:48:59 | Re : Optimisation remplacement

us_30

Membre Club

Bonsoir,

Une simple remarque

            If values.GetValue(1, i) Is Nothing Then
                theArray(i - 1) = ""
            Else

me semble pas utile. En effet theArray(i-1) est nécessaire vide après sa déclaration.

Amicalement,
Us.



vendredi 5 janvier 2007 à 00:13:48 | Re : Optimisation remplacement

XGuarden

Si vous auriez regarer son classement vous auriez vu que ces du vb.net =:0) Le but de la fonction comme montré das la deuxieme parti ces de transformer un range Excel en string()
je donne un range excel pi sa récupere les valeur dedans pour les mettres dans une string()

vendredi 5 janvier 2007 à 10:56:03 | Re : Optimisation remplacement

XGuarden

us_30 tu confond deux variable différente la...

vendredi 5 janvier 2007 à 13:21:38 | Re : Optimisation remplacement

DavidWhitewater

Salut,


pourquoi tu convertis deux fois de suite en String ?

theArray(i - 1) = CStr(values.GetValue(1, i).ToString())

A plus.

vendredi 5 janvier 2007 à 13:41:11 | Re : Optimisation remplacement

Charles Racaud

Membre Club
Tu peux pas faire directment un cast de range.Cells.Value en string() ?
Ou sinon de CType(range.Cells.Value, System.Array) en string() ?

__________
Kenji


vendredi 5 janvier 2007 à 22:08:02 | Re : Optimisation remplacement

us_30

Membre Club
JE ne me suis pas fais bien comprendre... Il me semble que IF est inutile ici. En effet, tu dis que si la variable "values" est nulle alors la seconde variable "theArray" sera vide sinon elle aura la même valeur que "values" (sauf convertie en string)... En résumé, dans tous les cas "theArray" aura la même valeur que "values" (converti en string)...

Donc ton code :

        Do While i <= values.Length
            If values.GetValue(1, i) Is Nothing Then
                theArray(i - 1) = ""
            Else
                theArray(i - 1) = CStr(values.GetValue(1, i).ToString())
            End If
            i += 1
        Loop

se résume à :

        Do While i <= values.Length
                theArray(i - 1) = CStr(values.GetValue(1, i))
            i += 1
        Loop

Sans compter, comme signalé par Charles Racaud, on peut penser à utliser FOR...

Amicalement,
Us.

samedi 6 janvier 2007 à 00:30:05 | Re : Optimisation remplacement

XGuarden


DavidWhitewater   tres juste, j'avais pas remarquer. par contre je peu enlever le .tostring mais pas le cstr, au cas ou la valeur serait nothing ce qui est pas gérer par .tostring a ma souvenance.
Charles Racaud Non on peu pas faire un cast sur un object COM vers un string, et pour la conversion apres le ctype faut oublier, le nombre dimension de l'array et différente.
us_30 En effet sa semble est corecte vu que ju'utilise cstr je peu le faire.


Voici le code a jour:
    Friend Function ConvertToStringArray(ByVal values As System.Array) As String()
        Dim theArray As String() = New String(values.Length - 1) {}

        For i As Integer = 1 To values.Length
            theArray(i - 1) = CStr(values.GetValue(1, i))
        Next i

        Return theArray
    End Function


et toujours appelé par cette ligne:
Dim theArray As String() = modExcel.ConvertToStringArray(CType(range.Cells.Value, System.Array))



Cette discussion est classé dans : string, remplacement, optimisation, values, thearray


Répondre à ce message

Sujets en rapport avec ce message

String long Optimisation... [ par neurosupherot ] Voila ça peut vous paraître idiot mais c'est important pour moi. La question est: Mieux vaut déclarer proprietés de type  long ou une seule de type s Changement wallpaper [ par Hector78 ] Hello !Je voudrais modifier l'image de background du bureau de windows, par une macro Excel. Si j'exécute le code ci-dessous, l'image n'est pas modifi a = String(TailleTampon, " ") [ par enibris ] J'ai un message d'erreur sur string Optimisation Taille base de donnée [ par P__ROMEO ] Bonjour. Je ne sais pas si ca se dit "Optimisation Taille base de donnée". Je veux savoir quelle est la meilleure manière pour ne pas gaspiller de l’ Transformer une string en nom de variable [ par mi12ox ] bonjour,pour des raisons d'optimisations d'un projet, j'aimerais savoir s'il est possible d'affecter une valeure à une variable en connaissant le nom Pb avec API netapi32 pour partage de dossier [ par renocmoa ] Bonjour,J'ai trouvé un code utilisant l'API netapi32 et permetant de partager un dossier. Le code fonctionne mais quelque soit la valeur de permission strfilename = string... [ par tomsower ] Bonjour, Voila j'ai une ligne de code : Strfilename = string (256,0) et mon programme bloque dessus avec le message "Projet ou bibliotheque introuvab Base de registre : valeurs binaires (.NET) [ par Mistigriss ] Bonjour, J'ai besoin de lire et écrire des valeurs binaires dans la base de registre en VB.NET, sans utiliser les API.Pour lire et écrire des valeurs Recuperer le handle d'un element d'une appli : j'ai tout y compris la class mais ça ne marche pas!! [ par supermotaboy ] Salut,Je voudrais récupérer le handle d'un controle d'une appli (foobar2000). Le probleme est que j'ai obtenu le nom de la class avec différents progr mciSendString [ par revline7 ] Bonjour,J'ai téléchargé et essayé plusieurs codes sur ce site mais la fonction mciSendString ne fonctionne pas... Faut-il Windows XP pour lire un mp3


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,014 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.