[déplacé VB.NET -> VBA] fonction replace

Mathioustone Messages postés 20 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 16 mai 2011 - 22 déc. 2010 à 16:07
Mathioustone Messages postés 20 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 16 mai 2011 - 23 déc. 2010 à 10:24
Bonjour,

Je souhaite réaliser une petite fonction qui me permettrait d'imprimer une liste de dossier (dans une base de données) sans de devoir réaliser l'impression à chaque fois.
Ca marche... presque...
le principe est le suivant: j'ai deux textbox qui me permettent de définir le dossier de départ et le dossier final.
Je test si les chaines sont identiques, dans un premier temps ça ne sera pas le cas: je lance donc l'impression.
ensuite je cherche à remplacer ma première chaine qui sera du genre CAP1234 par la suivante qui serait en logique CAP1235. J'extrait donc ma partie numérique afin de pouvoir l'incrémenter et la remettre dans ma chaine... mais là, je bloque je n'arrive pas à utiliser la fonction "replace" correctement afin de remplacer ma chaine. car dans le cas échéant, j'ai vidé mon imprimante ^^



Voici mon code:

Private Sub impression_Click()
Dim X As String
Dim Y As String

Do While TextBox1.Value <> TextBox2.Value ' comparer les deux chaines
ActiveSheet.PrintOut ' Lancer l'impression
X = Right(TextBox1.Value, 4)
Y = Right(TextBox1.Value, 4)
X = X + 1 'incrémentation
TextBox1.Value = Replace(TextBox1.Value, Y, X)

Loop

End Sub






Apprendre le français avant d'apprendre tout autre langage est une chose essentielle

2 réponses

lediablo Messages postés 214 Date d'inscription mercredi 26 avril 2006 Statut Membre Dernière intervention 2 août 2012
22 déc. 2010 à 17:08
bonjour

la fonction replace est bonne, mais ce qui ne va pas c'est peut être sa : TextBox1.value
sa devrait être TextBox1.Text pas .value

Quand on pose une question on est con 5 minutes,Quand on ne la pose pas on le reste toute sa vie (mon site)
0
Mathioustone Messages postés 20 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 16 mai 2011
23 déc. 2010 à 10:24
Merci bien!! j'aurais pu piocher la dessus encore un bon moment^^

Bon une autre requète me vient à l'esprit.
Voici mon programme final ( qui fonctionne ) :

Private Sub impression_Click()
Dim X As String
Dim Y As String
Dim U As Integer
Dim V As Integer
Dim W As Integer

Do While TextBox1.Value <> TextBox2.Value ' comparer les deux chaines
ActiveSheet.PrintOut ' Lancer l'impression
U = Mid(TextBox1.Value, 4, 1) ' extraction du premier chiffre du numéro de dossier

If U 0 Then ' test si U 0
V = Mid(TextBox1.Value, 5, 1) ' extraction du deuxième chiffre du numéro de dossier
If V 0 Then ' test si V 0
W = Mid(TextBox1.Value, 6, 1) ' extraction du troisième chiffre du numéro de dossier
If W 0 Then ' test si W 0
X = Right(TextBox1.Value, 1) 'extraction du numéro de dossier à incrémenter
Y = Right(TextBox1.Value, 1) 'extraction du numéro de dossier à remplacer
X = X + 1 'incrémentation du numéro de dossier
TextBox1.Text = Replace(TextBox1.Text, Y, X) ' Remplacement de la deuxième partie de la chaine
Else
X = Right(TextBox1.Value, 2) 'extraction du numéro de dossier à incrémenter
Y = Right(TextBox1.Value, 2) 'extraction du numéro de dossier à remplacer
X = X + 1 'incrémentation du numéro de dossier
TextBox1.Text = Replace(TextBox1.Text, Y, X) ' Remplacement de la deuxième partie de la chaine
End If
Else
X = Right(TextBox1.Value, 3) 'extraction du numéro de dossier à incrémenter
Y = Right(TextBox1.Value, 3) 'extraction du numéro de dossier à remplacer
X = X + 1 'incrémentation du numéro de dossier
TextBox1.Text = Replace(TextBox1.Text, Y, X) ' Remplacement de la deuxième partie de la chaine
End If
TextBox1.Text = Replace(TextBox1.Text, Y, X) ' Remplacement de la deuxième partie de la chaine
Else
X = Right(TextBox1.Value, 4)
Y = Right(TextBox1.Value, 4)
X = X + 1 'incrémentation du numéro de dossier
TextBox1.Text = Replace(TextBox1.Text, Y, X) ' Remplacement de la deuxième partie de la chaine
End If
Loop
End Sub

j'explique au cas ou...
J'ai donc mes deux textbox à comparer mais dans le cas où le dossier serait du style: ABC0010 ou bien EFG0004, après remplacement, notre cher "Bill" nous retire gentillement les zéros entre les lettres et le chiffre en croyant qu'ils n'ont aucune utilité: ABC11, EFG5. Mais au contraire, cela diminue donc la taille de ma chaine... enfin bref, problème résolu :)
Mais si quelqu'un aurait une astuce pour réduire ce programme (qui est quand mm conséquent pour une simple comparaison+impression, je suis preneur sinon tampis, déjà ça marche!!

encore merci
Apprendre le français avant d'apprendre tout autre langage est une chose essentielle
0
Rejoignez-nous