Défi du jour #1 (pas sûr qu'il y en aura un tous les jours ;o))

H2so4, en lisant ton code, d'abord j'ai appris plein de trucs, ensuite je me suis giflé pour être allé cherché midi à quatorze heures. C'est un modèle de concision, à mettre dans son carnet de Musts.
PS : je vois que nous avons à peu près tous fait la même démarche pour remplacer les boucles.

bonsoir,

C'est un modèle de concision, à mettre dans son carnet de Musts.

Si je retombe sur ce code dans 2 ans, pas sûr de comprendre rapidement le résultat qu'il va produire. donc pas sûr que ce soit un modèle à suivre !

je vois que nous avons à peu près tous fait la même démarche pour remplacer les boucles.

oui traitement récursif , je suis curieux de voir s'il y aura d'autres idées.

Re à tous,

J'ai pensé un peu tard au traitement récursif donc je ne vais pas tenter de faire ce qui a déjà été mieux fait...

Voici tout de même une alternative avec la fonction evaluate :

Sub essai()
i = Abs(True): c = asc("d"): Cells(i).Resize(c) = Evaluate("row(" & i & ":" & c & ")")
End Sub

Voici tout de même une alternative avec la fonction evaluate :

et un sifflet pour toi. Bravo !

vous êtes incroyables!!!! avec en plus des solutions différentes bravo messieurs et respect.

Bon week end à tous.

#3GB

Très joli et très court avec cet Evaluate.

#h2so4

Ce serait bien de prolonger cet excellent fil avec un nouveau jeu. Au moins tout serait regroupé au même endroit. Qu'en pensez-vous, maître ?

Bonjour,

@H2So4 : mon post précédent n'est pas bon, j'ai laissé le chiffre 1 dans une ligne ....

Je viens de voir cette instruction ASC que je ne connaissais pas (honte à moi...)

Du coup, je change ma proposition

Sub T()
Dim a
a = Range("A" & Rows.Count).End(xlUp).Row
If Range("A" & Left(Rows.Count, Len("B"))) = "" Then
    a = Left(Rows.Count, Len("B"))
Else: a = a + Left(Rows.Count, Len("B"))
End If
If a <= Asc("d") Then
    Range("A" & a) = a: T
End If
End Sub

@dan

Comment n'y ai-je pas pensé !

et un boulet en plus pour toi...

du coup j'adapte ma solution

Dim a
Sub b()
    c = Asc("d"): u = c / c: a = a + u: Cells(a, u) = a:  If a < c Then b Else a=u-u:End
End Sub

Bonjour …

Pour éviter un effet récursif à chaque appel intempestif de la macro :

Option Explicit
Dim x As Byte, L As Byte 'L ici pour la récursivité
Sub Cn()
    x = [A:A].Column
    If L = [CV:CV].Column Then L = x - x: Exit Sub
    L = L + x: Cells(L, x) = L: Cn 'pour l'effet récursif
End Sub

Bonjour tout le monde,

Wow, sympa tout ça! Merci beaucoup pour ces partages !

J'attends la solution PowerQuery

Bonjour ordonc,

Bravo ta solution fonctionne.

Pour éviter un effet récursif à chaque appel intempestif de la macro :

Je n'ai pas compris quel était le problème que tu essayais de résoudre et donc la solution non plus.

bonjour,

Sub test()
Plus1
End Sub
Sub Plus1(Optional i As Integer = 1)
Cells(i, "A") = i
If i = 100 Then Exit Sub
i = i + 1
DoEvents
Plus1 i
End Sub

Bonjour à Tous & à Toutes

Bon, j'arrive bien après la bataille. Mais vu que le était bien installé. J'en ai profité.

Donc voilà ma petite contribution tardive.

Sub Lig()
U = -True: C = Application.Arabic("C")
Range("A" & U & ":A" & C) = Evaluate("Row(" & U & ":" & C & ")")
End Sub

Bonjour à tous,

@dysorthographie : Je crois que tu n'as pas lien lu l'énoncé .

@X Cellus : C'est quoi cette fonction arabic ? Elle transforme les lettres des chiffres romains en nombres arabes ? C = 100, I = 1, L = 50 ? En tout cas, nos solutions sont proches .

Re h2so4

« Pour éviter un effet récursif à chaque appel intempestif de la macro » : c’est ce que tu fais avec

Else a=u-u:End

J’avais mis en place ma macro sans passer par le Else dès hier donc avant les autres propositions !

rebonjour Ordonc,

Else a=u-u:End

a=u-u sert à remettre la variable a à 0 pour une exécution ultérieure éventuelle de la macro (car sinon a garde sa valeur 100, vu que c'est une variable globale) et le end arrête la macro plutôt que de "dépiler" les 100 appels récursifs.

A nouveau,

@3GB,

Exact Arabic transforme du romain (par toutatix) en arabe. Et Romain fait l'inverse.

Evaluate car c''est plus rapide.

Mais apparemment c'est pas le défi de ce jour mais d'hier. J'ai beaucoup de retard...

Bonjour à tous,

Je comprend rien à part l'énoncé, mais j'ai tout lu et je ne peux que féliciter chacun d'entre vous pour vos propositions/alternatives qui en disent long sur le niveau restant à atteindre et les possibilités à notre disposition.

Je suis admiratif devant tout cette collaboration et encore bravo a 3GB et h2so4 pour l'initiative. Ca fait vraiment plaisir à lire et change des sujets parfois récurrents (petit jeu de mot avec le récursif pour la blague ..) que l'on se met en charge de traiter.

Bonne continuation dans vos échanges et bonne fin de week-end.

Cdlt,

Merci X Cellus !

C'est cool ça, je ne connaissais pas. Mais je ne parviens pas y accéder sur ma version 2010, ça doit donc être assez récent...

@Ergotamine : Et j'ajouterais que les produits de la marque Cif sont des bons récure-vis

Suite,

Dans les formules Math et trigonométrie elle se nomme Chiffre.Arabe et non Arabic (propre à VBA).

J'ai Excel 2010 sur un autre Portable. Je regarderais en fin de soirée. Mais peut être en ligne, du moins ceux qui sont en abonnement (je crois) on peut accéder et utiliser certaines fonctions ou formules non présentes dans sa version. A vérifier aussi.

Rechercher des sujets similaires à "defi jour pas aura tous jours"