Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Pb de boucle qui ne marche pas...

M

manue

Guest
salut,
je croyais avoir fini avec ce programme mais en realité lorsque je rajoute des lignes les 2 premieres se mettent sans pb mais par contre qd il s'agit d'en ajouter une 3eme, elle remplace alors la ligne 2.

Sauriez vous resoudre ce souci technique...
Merci d'avance
Manue
 

Pièces jointes

  • Etude1.zip
    49.8 KB · Affichages: 25
  • Etude1.zip
    49.8 KB · Affichages: 21
  • Etude1.zip
    49.8 KB · Affichages: 21
C

coyote

Guest
Ta variable Décalage n'est pas nécessaire

'si la première ligne de la facture est vide, insérer les données à partir de b20
If Range("b20").Value = "" Then
Range("b20").Select
Else
Range("b20").End(xlDown).Offset(1, 0).Select
End If

et il faut également adapter les instructions d'affichage des valeurs qui peuvent être simplifiées

par exemple
ActiveCell.Offset(0, 0).Value = DESIGN

au lieu de

ActiveCell.Offset(décalage, 0).Range("A1").Select
ActiveCell.Value = DESIGN

Je n'ai pas essayé mais çà devrait marcher
 
R

Roland

Guest
Bonjour Manue et tous mes voeux
essaie de corriger ton code comme ceci
If Range("b20").Value = "" Then
décalage = 0
Range("b20").Select
Else
décalage = 1
Position = Range("b20").End(xlDown).Address
Range(Position).Select
'Range("b19").End(xlDown).Select
End If
Tu prends B19 comme point d'encrage alors que cette case est vide la fonction END te renvoi sans cesse 20. Mets en commentaire pour mémoire ou supprime la ligne Range("19")........
Bonne chance Roland
 
C

coyote

Guest
Suite à ton mail j'ai testé en Live (y a pas plus efficace pour vérifier)

En effet ma proposition est incomplète
ce qui fait défaut est l'instruction Xldown
On vérifie si la 1ère ligne existe pour ne pas utiliser l'XlDown
mais faut le faire sur la 2ème également sinon on se retrouve en bas de feuille
donc si dessous une proposition intégrale qui semble fonctionner à vérifier tout de même (on peut toujours affiner ou simplifier)

*****

Private Sub AjouterVente_Click()

If Quantité = 0 Then
MsgBox "Quantité non saisie"
Else
Sheets("etude").Select

If Unité.unitm Then
uni = "m²"
contrôle = 1
ElseIf Unité.unite Then
uni = "ens"
contrôle = 1
ElseIf Unité.unitu Then
uni = "U"
contrôle = 1
ElseIf Unité.unitm = False And Unité.unite = False And Unité.unitu = False Then
repunit = MsgBox("unité non saisie", vbCritical + vbOKOnly, "Manu")
contrôle = 0
End If



'si la première ligne de la facture est vide, insérer les données à partir de b20
If Range("B20").Value = "" Then
Range("B20").Select
Else
If Range("B21").Value = "" Then
Range("B21").Select
Else
Range("B20").End(xlDown).Offset(1, 0).Select
End If
End If


'ajout de la ligne dans la facture
If contrôle = 1 Then
ActiveCell.Value = DESIGN
ActiveCell.Offset(0, 2).Value = uni
ActiveCell.Offset(0, 4).Value = Int(Quantité)
ActiveCell.Offset(0, 6).Value = Int(MOC)
ActiveCell.Offset(0, 8).Value = Int(MOA)
ActiveCell.Offset(0, 20).Value = Int(MTQ)
ActiveCell.Offset(0, 22).Value = Int(Prix)

DESIGN = ""
uni = ""
SaisieVentes.Quantité = ""
SaisieVentes.Prix = ""
SaisieVentes.MOC = ""
SaisieVentes.MOA = ""
SaisieVentes.MTQ = ""
unitm.Value = False
unite.Value = False
unitu.Value = False
Portes.Value = False
Mobilier.Value = False
Quincaillerie.Value = False
Désignations = ""
Else
End If
End If
Range("D9").Select


End Sub
 
M

manue

Guest
Merci à tous les 2 pour votre aide qui m'a été precieuse!!!

Maintenant mon programme marche ce qui n'aurait pas été le cas sans vous...
Un grand bravo et merci pour votre apport, c super

A bientot
Manue
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…