macros

stef784

XLDnaute Junior
Bonjour

On doit ecrire un programme qui lit un mot et un nombre et affiche par exemple

"Les 3 lettres au milieu de productif sont duc"
"Les 4 lettes aux millieux de conjonctifs sont jonc "

Voila ce que j'ai fais:

Sub bab()
Dim s As string
Dim x As Integer
s=Inputbox("entrez un mot")
x=Inputbox("entrez un chiffre")
Msgbox("les" & x & "lettres au milieu de" & s & "sont" &mid(s,x,x))
End sub

c'est ca qui me pose probleme : &mid(s,x,x)) je ne vois pas quoi mettre a la place des x pour que cette formule marche a chaque fois
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : macros

Salut stef
si tu avais utilisé l'aide tu aurais vu ceci



Syntaxe

Mid(string, start[, length])

La syntaxe de la fonction Mid comprend les arguments nommés suivants :

Élément Description
string Expression de chaîne dont sont extraits les caractères à renvoyer. Si l'argument string contient une valeur de type Null, Null est renvoyé.
start Donnée de type Long. Position du caractère dans l'argument string qui marque le début de la partie à extraire. Si la valeur de l'argument start est supérieure au nombre de caractères contenus dans l'argument string, la fonction Mid renvoie une chaîne de longueur nulle ("").
length Facultatif. Donnée de type Variant (Long). Nombre de caractères à renvoyer. Si l'argument length est omis ou si le nombre de caractères du texte (y compris le caractère qui occupe la position start), est inférieur à la valeur de cet argument, tous les caractères à compter de la position start et jusqu'à la fin de la chaîne sont renvoyés.


ton problème vient des arguments mid(string,start ,lenght)
Attention: "jonc" n'est pas exactement au milieu du mot car il est précédé de 3 lettres mais suivi de 4 autres
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : macros

bonjour stef84

teste ceci

Code:
Sub bab()
Dim s As String
Dim x As Integer
Dim y As Integer
s = InputBox("entrez un mot")
x = InputBox("entrez un chiffre")
If x > Len(s) Then
  MsgBox ("Pas plus de lettres que dans le mot svp")
  Exit Sub
End If
y = ((Len(s) - x) / 2) + 1
MsgBox ("les " & x & " lettres au milieu de " & s & " sont " & Mid(s, y, x))
End Sub

edit
Salut phlaurent55
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : macros

Re,

@pierrejean, je viens d'ajouter ceci dans le post précédent

Attention: "jonc" n'est pas exactement au milieu du mot car il est précédé de 3 lettres mais suivi de 4 autres

bonne fin de Week-end à tou(te)s
 

pierrejean

XLDnaute Barbatruc
Re : macros

@ phlaurent55

nous sommes d'accord !!

Faut-il creer une msg box indiquant que si le mot est impair , le nombre de lettres a chercher doit etre aussi impair ,sinon il ne sera pas strictement au mileu ??
nota: pour un mot a nombre de lettres pair le nombre de lettres a chercher doit aussi etre pair
 
Dernière édition:

stef784

XLDnaute Junior
Re : macros

Merci a vous

et une derniere chose

on a la macro suivante:

Sub macro()
Dim x as Integer, s as Integer
x=2 : s=x
x=x+2 : s=s+x
x=x+2 : s=s+x
etc

Je ne comprend pas bien comment on lit ca ? ça se lit sur une ligne ? ca signifie quoi ":"
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : macros

Salut stef
Merci a vous

et une derniere chose

on a la macro suivante:

Sub macro()
Dim x as Integer, s as Integer
x=2 : s=x
x=x+2 : s=s+x
x=x+2 : s=s+x
etc

Je ne comprend pas bien comment on lit ca ? ça se lit sur une ligne ? ca signifie quoi ":"

à chaque instruction, les valeurs de "x" et "s" vont
évoluer de la manière suivante
x=2 : s=x -----> x=2 s=2
x=x+2 : s=s+x -----> x=4 s=6
x=x+2 : s=s+x -----> x=6 s=12
x=x+2 : s=s+x -----> x=8 s=20
x=x+2 : s=s+x -----> x=10 s=30
etc....
 

Discussions similaires