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

bonjour à tous,

Suite à une suggestion de 3GB, je vous propose le défi suivant :

écrire les nombres de 1 à 100 en colonne A ligne 1 à 100, via une macro vba sans utiliser les instructions for, while, do, goto, gosub, ni les méthodes .autofill ou .dataseries, ni aucune des variantes .Formula. Les chiffres ne sont pas autorisés.

Les chiffre ne sont pas du tout autorisés, c.a.d. qu'on ne peut pas utiliser de variable numérique ? Et les constantes non plus ?

bonjour

un truc avec rowindex?????

cordialement

Salut Optimix

Les chiffre ne sont pas du tout autorisés, c.a.d. qu'on ne peut pas utiliser de variable numérique ? Et les constantes non plus ?

le code vba ne peut pas contenir les caractères 0,1,2,3,4,5,6,7,8,9

sub A1()
i9=1+1
range("A1")
dim a(100)
const A=8
'8 est l'infini vertical

toutes ces instructions sont non valables car elles contiennent un ou des chiffres.

Coucou tout le monde !

Un essai :

Private Sub Worksheet_Activate()

Range("A" & Len("A")) = Range("A" & Len("A")).Row

End Sub
Private Sub Worksheet_Change(ByVal Target As Range)

If Len(CStr(Target.Row)) < Len("BJR") Then Target.Offset(Len("A")) = Target.Offset(Len("A")).Row

End Sub

C'est de la belle bidouille pas optimale !

Salut Pedro,

belle idée, mais s'arrête à 47 ... qui semble être le maximum de la pile pour les procédures événementielles. (en tout cas avec ma version 365)

Salut Pedro,

belle idée, mais s'arrête à 47 ... qui semble être le maximum de la pile pour les procédures événementielles. (en tout cas avec ma version 365)

chez moi ça va plus loin ! Après personne n'a dit que ça devait marcher !

rebonjour,

chez moi ça va plus loin !

Une plume pour toi alors. J'attends les autres propositions

Bon, après tout personne n'est obligé de zieuter.

25looping.xlsm (18.79 Ko)

Bonjour le fil
Très bonne idée h2so4

J'ai le droit de jouer ?

2 lignes

@+

@ optimix,

joli aussi, pour toi ce sera une ancre de plus à ta collection.

H2so4 normalement j'ai droit à ce code (2 lignes)

Edit : arf ben non je n'avais pas vu "aucun chiffre dans le code ni aucune des variantes .formula"... je me disais aussi trop simple

@+

@BrunoM45,

Très bonne idée h2so4

rendons à César ce qui est César, l'idée est de 3GB

J'ai le droit de jouer ?

plus on est de fous, ... mais relis bien les règles pas de chiffres et pas de .formula ou une ses variantes, or tu utilises les 2.

Bonjour à tous,

Merci h2so4 pour ce petit défi ! Je vois que ma première proposition en privée est un échec ! Sans boucle, je patauge totalement ...

Bravo Pedro22 pour ta solution, très astucieuse ! Je n'ai pas vu celle d'Optimix pour le moment...

A plus,

Merci h2so4 pour l'idée. J'ai passé du bon temps.

Bonsoir,

Quelqu'un peut essayer ceci --> Codes à placer dans la feuille où l'on numérote.
de mon coté j'ai un problème de "Pile" qui fait planter. Je pense que cela doit venir du Worksheet_change qui ne peut s'exécuter qu'un nombre de fois inférieur à 100. Pour ma part cela s'arrête à 75.

Dim a
Private Sub Worksheet_Activate()
a = Range("A" & Rows.Count).End(xlUp).Row
Range("A" & a) = a
End Sub
Private Sub Worksheet_change(ByVal Target As Range)
If a < Left(Rows.Count, Len("BBB")) - Len("BBB") Then
    On Error Resume Next
    a = Range("A" & Rows.Count).End(xlUp).Row + Left(Rows.Count, 1)
    Range("A" & a) = a
End If
End Sub

Edit : code incorrect, une ligne contient le chiffre 1. Voir post suivant --> https://forum.excel-pratique.com/s/goto/966419

voici ma solution, même principe que optimix.

26defi-du-jour-1.xlsm (15.85 Ko)

Re,

Me revoici avec un code qui est un peu tordu (pas trouvé mieux) mais qui respecte les directives

Un petit passe temps sympa, qui change du quotidien

@+

@ dan,

chez moi ça s'arrête à 46, la solution de Pedro22 s'arrête à 47.

Hello à tous,

Voici ma proposition

Sub testing()
Dim Dizaine As Byte, Centaine As Byte
Dizaine = CByte(Len("Top___defi"))
Centaine = Dizaine * Dizaine
Call Remplissage(Dizaine / Dizaine, Centaine, Dizaine / Dizaine)
End Sub
Sub Remplissage(Alim As Byte, Fin As Byte, Memo As Byte)
Dim Compteur As Byte
Compteur = Alim
If Not Compteur > Fin Then
    Range("A" & Compteur) = Compteur
    Compteur = Compteur + Memo
    Call Remplissage(Compteur, Fin, Memo)
End If
End Sub
Rechercher des sujets similaires à "defi jour pas aura tous jours"