VBA excel - Problème
Résolu
Calvin
-
pilas31 Messages postés 1878 Statut Contributeur -
pilas31 Messages postés 1878 Statut Contributeur -
Bonjour,
Je suis novice en programmation vba et je ne me sors pas du problème suivant :
Je dois créer un formulaire de saisie très simple : 3 zones de textes dans ce formulaire qui vont alimenter les 3 premières colonnes d'une feuille excel... et cela jusqu'a ce que les donnée présentes dans la quatrième colonne de la feuille soient vides. la boucle de remplissage s'arrête donc dès que la cellule D100 (par exemple) n'est plus renseignée...
Voici mon code et pardon par avance pour le niveau mais je rame.... Merci à vous de m'éclairer.
Sub cmdvalider_Click()
If boitannee = "" Then
MsgBox "Vous devez entrer une année."
boitannee.SetFocus
Exit Sub
End If
If boitmois = "" Then
MsgBox "Vous devez entrer un mois."
boitmois.SetFocus
Exit Sub
End If
If boitcode = "" Then
MsgBox "Vous devez entrer un code."
boitcode.SetFocus
Exit Sub
End If
finboucle = 0
ligne = 0
While finboucle = 0
ligne = ligne + 1
If (Lastrow.Offset(ligne, 3).Value <> "") Then
Lastrow.Offset(ligne, 0).Value = boitannee
Lastrow.Offset(ligne, 1).Value = boitmois
Lastrow.Offset(ligne, 1).Value = boitcode
Else
finboucle = 1
End If
Wend
End Sub
Je suis novice en programmation vba et je ne me sors pas du problème suivant :
Je dois créer un formulaire de saisie très simple : 3 zones de textes dans ce formulaire qui vont alimenter les 3 premières colonnes d'une feuille excel... et cela jusqu'a ce que les donnée présentes dans la quatrième colonne de la feuille soient vides. la boucle de remplissage s'arrête donc dès que la cellule D100 (par exemple) n'est plus renseignée...
Voici mon code et pardon par avance pour le niveau mais je rame.... Merci à vous de m'éclairer.
Sub cmdvalider_Click()
If boitannee = "" Then
MsgBox "Vous devez entrer une année."
boitannee.SetFocus
Exit Sub
End If
If boitmois = "" Then
MsgBox "Vous devez entrer un mois."
boitmois.SetFocus
Exit Sub
End If
If boitcode = "" Then
MsgBox "Vous devez entrer un code."
boitcode.SetFocus
Exit Sub
End If
finboucle = 0
ligne = 0
While finboucle = 0
ligne = ligne + 1
If (Lastrow.Offset(ligne, 3).Value <> "") Then
Lastrow.Offset(ligne, 0).Value = boitannee
Lastrow.Offset(ligne, 1).Value = boitmois
Lastrow.Offset(ligne, 1).Value = boitcode
Else
finboucle = 1
End If
Wend
End Sub
A voir également:
- VBA excel - Problème
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
3 réponses
Bonsoir,
Voilà un code qui devrait fonctionner :
A+
Voilà un code qui devrait fonctionner :
Sub cmdvalider_Click() If boitannee = "" Then MsgBox "Vous devez entrer une année." boitannee.SetFocus Exit Sub End If If boitmois = "" Then MsgBox "Vous devez entrer un mois." boitmois.SetFocus Exit Sub End If If boitcode = "" Then MsgBox "Vous devez entrer un code." boitcode.SetFocus Exit Sub End If ligne = 1 finboucle=0 While finboucle <> 1 If (Cells(ligne, 4).Value <> "") Then ligne = ligne + 1 Else Cells(ligne, 1).Value = boitannee Cells(ligne, 2).Value = boitmois Cells(ligne, 3).Value = boitcode finboucle = 1 End If Wend End Sub
A+
Bonjour,
Je n'ai pas bien compris pourquoi tu ne veux pas utiliser le format personnalisé car en utilisant le format "00" même en VBA grâce à l'instruction :
Tu obtiens bien ce que tu souhaites et tu peux même faire des calculs qui continuent à fonctionner correctement.
Peux tu me préciser ce point.
A+
Je n'ai pas bien compris pourquoi tu ne veux pas utiliser le format personnalisé car en utilisant le format "00" même en VBA grâce à l'instruction :
Columns("E:E").Select Selection.NumberFormat = "00"
Tu obtiens bien ce que tu souhaites et tu peux même faire des calculs qui continuent à fonctionner correctement.
Peux tu me préciser ce point.
A+
Bonjour Pilas,
Et bien en fait il se trouve une application qui en aval de mon fichier récupère les données, et je ne sais pour quelle raison, si je mets au format personnalisé "00" elle ne reconnaît pas le "0" supplémentaire. Il ne semble s'agir que d'un affichage. J'ai plus besoin en fait d'une concaténation.
Bonne journée et @ +
Et bien en fait il se trouve une application qui en aval de mon fichier récupère les données, et je ne sais pour quelle raison, si je mets au format personnalisé "00" elle ne reconnaît pas le "0" supplémentaire. Il ne semble s'agir que d'un affichage. J'ai plus besoin en fait d'une concaténation.
Bonne journée et @ +
Re
Ok, je comprends mieux. Dans ce cas, je te propose de modifier légérement ton code initial en utilisant la concaténation, voilà le code modifié :
Dis moi si cela te convient
A+
Ok, je comprends mieux. Dans ce cas, je te propose de modifier légérement ton code initial en utilisant la concaténation, voilà le code modifié :
Columns("E:E").Select Selection.NumberFormat = "@" Selection.HorizontalAlignment = xlRight 'justification à droite du texte ligne = 2 While Cells(ligne, 5) <> 0 If Cells(ligne, 5).Value < 10 And Mid(Cells(ligne, 5), 1, 1) <> "0" Then Cells(ligne, 5).Value = "0" & Cells(ligne, 5).Value End If ligne = ligne + 1 Wend
Dis moi si cela te convient
A+
Merci beaucoup pour le code. En bidouillant un tout petit peu c'est tout à fait ça. Encore merci pour ta précieuse aide.
Voici le code à présent :
Sub cmdvalider_Click()
If boitannee = "" Then
MsgBox "Vous devez entrer une année."
boitannee.SetFocus
Exit Sub
End If
If boitmois = "" Then
MsgBox "Vous devez entrer un mois."
boitmois.SetFocus
Exit Sub
End If
If boitcode = "" Then
MsgBox "Vous devez entrer un code."
boitcode.SetFocus
Exit Sub
End If
ligne = 1
finboucle = 0
While finboucle <> 1
ligne = ligne + 1
If (Cells(ligne, 4).Value <> "") Then
Cells(ligne, 1).Value = boitannee
Cells(ligne, 2).Value = boitmois
Cells(ligne, 3).Value = boitcode
Else
finboucle = 1
End If
Wend
End Sub
J'avais mal compris la condition sur la colonne D. Donc tu as bien rectifié.
Heureux d'avoir pu t'aider.
Bonne continuation...
Voilà, c'est sans doute relativement simple mais je débute et je ne m'en sors pas.
A partir du code suivant, les valeurs présentes dans ma colonne E doivent commencer par "0" si elles sont inférieures à 10. Les autres restent sur 2 chiffres. Dès que la cellule est vide, fin de la boucle....J'introduis donc une boucle mais cela ne fonctionne pas.
Ainsi 2 doit devenir 02, etc... Je ne passe pas par un format de cellule personnalisé car je dois récupérer les valeurs sur 2 chiffres. Ce n'est donc pas qu'un affichage apparent..
Voici la partie de code en question :
ligne = 1
finboucle = 0
Columns("E:E").Select
Selection.NumberFormat = "@"
While finboucle <> 1
ligne = ligne + 1
If (Cells(ligne, 5).Value < 10) Then
Cells(ligne, 5).Value = "0" + Cells(ligne, 5).Value
End If
If Cells(ligne, 5).Value = "" Then
finboucle = 1
End If
Wend
Un grand merci par avance pour votre aide précieuse.