PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 9 févr. 2010 à 11:22
debutLettre est un string
UCase va renvoyer un variant
il faut utiliser ucase$
tropGrand(ByRef debutChiffre <- AS QUEL TYPE? pas typé = variant
etc...
Pariterre
Messages postés15Date d'inscriptionmercredi 6 août 2008StatutMembreDernière intervention 5 septembre 2010 9 févr. 2010 à 04:58
D'accord, donc si je comprends bien, je peux/dois poster les petites fonctions sur codyx.org. C'est bon, je ferai à l'avenir.
Pour ce qui est du typage, j'avoue ne pas saisir à quoi cela fait référence... là, c'est vraiment parce que je suis débutant en fait. Tu as un lien à me proposer sur le typage (afin de savoir ce que je suis sensé poster et non poster ici)
Merci :)
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 9 févr. 2010 à 02:46
malheureusement ils ne pourront pas te répondre, regarde en haut : j'ai déjà supprimé ta source. seuls toi et moi pouvons voir ces commentaires
donc comme indiqué s'il y a vraiment un intérêt, le code reste trop court. simple fonction : CODYX.ORG
et, rapide ou non, en diagonale il n'est pas correct : aucun typage
bonne soirée
Pariterre
Messages postés15Date d'inscriptionmercredi 6 août 2008StatutMembreDernière intervention 5 septembre 2010 9 févr. 2010 à 01:48
Finalement, j'ai trouvé une très bonne raison de le conserver!
Mon algorithme passe 100 000 itérations en 0,3 sec
Le dernier de US_30 le fait en 2,3 sec
Le plus lent est le second que US_30 a déposé les faisant en 5,8 sec
Celui de Big les fait en 1,5 sec
J'améliore la vitesse par un facteur 10 pour incrémenter ces lignes.
(bon si c'est pas une raison suffisante, je supprime, j'ai besoin de votre avis là-dessus :))
Pariterre
Messages postés15Date d'inscriptionmercredi 6 août 2008StatutMembreDernière intervention 5 septembre 2010 9 févr. 2010 à 01:15
Ah ouais, carrément beaucoup mieux.
Pour une raison que j'ignore, je n'ai jamais vu aussi simple nulle part sur les forums! Partout, ils proposent des façons tordues d'incrémenter une colonne... mais jamais aussi simplement.
Ça va me sauver beaucoup de problèmes!
Question pour US_30, je suis mieux de supprimer le tout ou simplement de changer le titre [et éventuellement l'endroit de la source... j'ai lu vite qu'il y avait un endroit pour les sources et un autre pour les choses utiles] pour quelque chose du genre :
Incrémentation de lettre
Merci pour vos réponses :)
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 9 févr. 2010 à 00:53
hum... On peut considérer Instr comme plus gourmand que Len... Donc une autre alternative plus optimisée basée sur le mélange du code de Bigfish et Next :
Function ColNext(ByVal Lettre As String) As String
ColNext = Columns(Columns(Lettre).Column).Next.Address(False, False)
ColNext = Left$(ColNext, Len(ColNext) - 1)
End Function
Qui dit mieux...
Amicalement,
Us.
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 8 févr. 2010 à 23:39
Bonsoir,
une fois de plus je ne peux qu'etre d'accord avec US_30 et me permets donc d'y aller de ma version:
Function ColonneSuivante(ByVal ColName As String) As String
ColonneSuivante = Columns(Columns(ColName).Column + 1).Address(False, False)
ColonneSuivante = Left$(ColonneSuivante, InStr(1, ColonneSuivante, ":", vbTextCompare) - 1)
End Function
pour info : Excel2007 => 16384 colonnes
A+
3ddI7IHd
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 8 févr. 2010 à 22:53
ou encore une autre version (moins gourmande en ressource)
Du coup, à se demander si cela vaut vraiment le coup de mettre une source pour ça... Je serais tenté de dire non... mais je te laisse voir ça tout seul... En effet, et tu le comprendras bien, qu'il faut mettre des choses qui présente quelque intérêt... et voir le point 2 du règlement...
9 févr. 2010 à 11:22
UCase va renvoyer un variant
il faut utiliser ucase$
tropGrand(ByRef debutChiffre <- AS QUEL TYPE? pas typé = variant
etc...
9 févr. 2010 à 04:58
Pour ce qui est du typage, j'avoue ne pas saisir à quoi cela fait référence... là, c'est vraiment parce que je suis débutant en fait. Tu as un lien à me proposer sur le typage (afin de savoir ce que je suis sensé poster et non poster ici)
Merci :)
9 févr. 2010 à 02:46
donc comme indiqué s'il y a vraiment un intérêt, le code reste trop court. simple fonction : CODYX.ORG
et, rapide ou non, en diagonale il n'est pas correct : aucun typage
bonne soirée
9 févr. 2010 à 01:48
Mon algorithme passe 100 000 itérations en 0,3 sec
Le dernier de US_30 le fait en 2,3 sec
Le plus lent est le second que US_30 a déposé les faisant en 5,8 sec
Celui de Big les fait en 1,5 sec
J'améliore la vitesse par un facteur 10 pour incrémenter ces lignes.
(bon si c'est pas une raison suffisante, je supprime, j'ai besoin de votre avis là-dessus :))
9 févr. 2010 à 01:15
Pour une raison que j'ignore, je n'ai jamais vu aussi simple nulle part sur les forums! Partout, ils proposent des façons tordues d'incrémenter une colonne... mais jamais aussi simplement.
Ça va me sauver beaucoup de problèmes!
Question pour US_30, je suis mieux de supprimer le tout ou simplement de changer le titre [et éventuellement l'endroit de la source... j'ai lu vite qu'il y avait un endroit pour les sources et un autre pour les choses utiles] pour quelque chose du genre :
Incrémentation de lettre
Merci pour vos réponses :)
9 févr. 2010 à 00:53
Function ColNext(ByVal Lettre As String) As String
ColNext = Columns(Columns(Lettre).Column).Next.Address(False, False)
ColNext = Left$(ColNext, Len(ColNext) - 1)
End Function
Qui dit mieux...
Amicalement,
Us.
8 févr. 2010 à 23:39
une fois de plus je ne peux qu'etre d'accord avec US_30 et me permets donc d'y aller de ma version:
Function ColonneSuivante(ByVal ColName As String) As String
ColonneSuivante = Columns(Columns(ColName).Column + 1).Address(False, False)
ColonneSuivante = Left$(ColonneSuivante, InStr(1, ColonneSuivante, ":", vbTextCompare) - 1)
End Function
pour info : Excel2007 => 16384 colonnes
A+
3ddI7IHd
8 févr. 2010 à 22:53
Sub MacroViteFait2()
Dim Lettre As String
Dim ColName As String
Lettre = "AB"
ColName = Mid$(Range(Lettre & "1").Next(1, 1).Address, 2, InStr(2, Range(Lettre & "1").Next(1, 1).Address, "$") - 2)
MsgBox ColName
End Sub
Amicalement,
Us.
8 févr. 2010 à 22:40
Beaucoup d'effort pour rien... Voici un peu plus court pour la même chose :
Sub MacroViteFait()
Dim Lettre As String
Dim ColNext As String
Dim ColName As Variant
Lettre = "A"
ColNext = Range(Lettre & "1").Next(1, 1).Address
ColName = Split(ColNext, "$")
MsgBox ColName(1)
End Sub
Du coup, à se demander si cela vaut vraiment le coup de mettre une source pour ça... Je serais tenté de dire non... mais je te laisse voir ça tout seul... En effet, et tu le comprendras bien, qu'il faut mettre des choses qui présente quelque intérêt... et voir le point 2 du règlement...
Amicalement,
Us.