Problème au niveau de on error goto
Résolu
sikasika
Messages postés
74
Statut
Membre
-
sikasika Messages postés 74 Statut Membre -
sikasika Messages postés 74 Statut Membre -
Bonjour tout le monde ,
ce que je veux faire c'est : en rentrant un nom d'une société dans un userform (et aussi d'autres données ) si cette société existe déjà il va juste ajouter une nouvelle ligne en dessous et qui remplisse la ligne mais si elle n'existe pas qui m'ajoute une ligne en dernier de mon tableau
le code marche bien sauf que quand j'entre un nom d'une société existante il m'ajoute une ligne en dessous de cette société mais aussi à la fin du tableau ,c'est comme s'il exécutait les deux codes
Private Sub chx_Click()
Application.ScreenUpdating = False
'recherche des cellules
Cells(1, 1).Select
On Error GoTo erreur
Cells.Find(What:=UserForm2.vdr, After:=ActiveCell).Activate
If Selection.Offset(1, 0) = "" Then
ligne = Selection.Offset(1, 0).Row
Else
ligne = Selection.End(xlDown).Row + 1
End If
Rows(ligne).Select
Selection.Insert Shift:=xlDown
Sheets("VENTE").Range("A" & ligne) = UserForm2.vdr.Value
Sheets("VENTE").Range("B" & ligne) = UserForm2.emt.Value
Sheets("VENTE").Range("C" & ligne) = UserForm2.nat.Value
Sheets("VENTE").Range("D" & ligne) = UserForm2.code.Value
Sheets("VENTE").Range("F" & ligne) = UserForm2.txfac.Value
Sheets("VENTE").Range("G" & ligne) = UserForm2.dtem.Value
Sheets("VENTE").Range("H" & ligne) = UserForm2.dtech.Value
Sheets("VENTE").Range("K" & ligne) = UserForm2.txcrb.Value
Sheets("VENTE").Range("I" & ligne) = UserForm2.qt.Value
Sheets("VENTE").Range("J" & ligne) = UserForm2.sprdini.Value
Sheets("VENTE").Range("L" & ligne) = UserForm2.pachat.Value
Sheets("VENTE").Range("M" & ligne) = Sheets("VENTE").Range("L" & ligne).Value + Sheets("VENTE").Range("K" & ligne).Value
erreur:
ligne = Range("A20000").End(xlUp).Row + 3
Rows(ligne).Select
Selection.Insert Shift:=xlDown
Sheets("VENTE").Range("A" & ligne) = UserForm2.vdr.Value
Sheets("VENTE").Range("B" & ligne) = UserForm2.emt.Value
Sheets("VENTE").Range("C" & ligne) = UserForm2.nat.Value
Sheets("VENTE").Range("D" & ligne) = UserForm2.code.Value
Sheets("VENTE").Range("F" & ligne) = UserForm2.txfac.Value
Sheets("VENTE").Range("G" & ligne) = UserForm2.dtem.Value
Sheets("VENTE").Range("H" & ligne) = UserForm2.dtech.Value
Sheets("VENTE").Range("K" & ligne) = UserForm2.txcrb.Value
Sheets("VENTE").Range("I" & ligne) = UserForm2.qt.Value
Sheets("VENTE").Range("J" & ligne) = UserForm2.sprdini.Value
Sheets("VENTE").Range("L" & ligne) = UserForm2.pachat.Value
Sheets("VENTE").Range("M" & ligne) = Sheets("VENTE").Range("L" & ligne).Value + Sheets("VENTE").Range("K" & ligne).Value
Application.ScreenUpdating = True
End Sub
pouvez vous m'aider . Merci
ce que je veux faire c'est : en rentrant un nom d'une société dans un userform (et aussi d'autres données ) si cette société existe déjà il va juste ajouter une nouvelle ligne en dessous et qui remplisse la ligne mais si elle n'existe pas qui m'ajoute une ligne en dernier de mon tableau
le code marche bien sauf que quand j'entre un nom d'une société existante il m'ajoute une ligne en dessous de cette société mais aussi à la fin du tableau ,c'est comme s'il exécutait les deux codes
Private Sub chx_Click()
Application.ScreenUpdating = False
'recherche des cellules
Cells(1, 1).Select
On Error GoTo erreur
Cells.Find(What:=UserForm2.vdr, After:=ActiveCell).Activate
If Selection.Offset(1, 0) = "" Then
ligne = Selection.Offset(1, 0).Row
Else
ligne = Selection.End(xlDown).Row + 1
End If
Rows(ligne).Select
Selection.Insert Shift:=xlDown
Sheets("VENTE").Range("A" & ligne) = UserForm2.vdr.Value
Sheets("VENTE").Range("B" & ligne) = UserForm2.emt.Value
Sheets("VENTE").Range("C" & ligne) = UserForm2.nat.Value
Sheets("VENTE").Range("D" & ligne) = UserForm2.code.Value
Sheets("VENTE").Range("F" & ligne) = UserForm2.txfac.Value
Sheets("VENTE").Range("G" & ligne) = UserForm2.dtem.Value
Sheets("VENTE").Range("H" & ligne) = UserForm2.dtech.Value
Sheets("VENTE").Range("K" & ligne) = UserForm2.txcrb.Value
Sheets("VENTE").Range("I" & ligne) = UserForm2.qt.Value
Sheets("VENTE").Range("J" & ligne) = UserForm2.sprdini.Value
Sheets("VENTE").Range("L" & ligne) = UserForm2.pachat.Value
Sheets("VENTE").Range("M" & ligne) = Sheets("VENTE").Range("L" & ligne).Value + Sheets("VENTE").Range("K" & ligne).Value
erreur:
ligne = Range("A20000").End(xlUp).Row + 3
Rows(ligne).Select
Selection.Insert Shift:=xlDown
Sheets("VENTE").Range("A" & ligne) = UserForm2.vdr.Value
Sheets("VENTE").Range("B" & ligne) = UserForm2.emt.Value
Sheets("VENTE").Range("C" & ligne) = UserForm2.nat.Value
Sheets("VENTE").Range("D" & ligne) = UserForm2.code.Value
Sheets("VENTE").Range("F" & ligne) = UserForm2.txfac.Value
Sheets("VENTE").Range("G" & ligne) = UserForm2.dtem.Value
Sheets("VENTE").Range("H" & ligne) = UserForm2.dtech.Value
Sheets("VENTE").Range("K" & ligne) = UserForm2.txcrb.Value
Sheets("VENTE").Range("I" & ligne) = UserForm2.qt.Value
Sheets("VENTE").Range("J" & ligne) = UserForm2.sprdini.Value
Sheets("VENTE").Range("L" & ligne) = UserForm2.pachat.Value
Sheets("VENTE").Range("M" & ligne) = Sheets("VENTE").Range("L" & ligne).Value + Sheets("VENTE").Range("K" & ligne).Value
Application.ScreenUpdating = True
End Sub
pouvez vous m'aider . Merci
A voir également:
- Problème au niveau de on error goto
- Clé de mise à niveau windows 7 gratuit - Guide
- Eespt technical error ✓ - Forum TNT / Satellite / Réception
- Mise a niveau windows 7 vers 10 - Accueil - Mise à jour
- Erreur au niveau du profil ✓ - Forum Google Chrome
- 4 images 1 mot niveau 10 chaperon rouge ✓ - Forum Jeux vidéo
2 réponses
Bonjour,
avec un fichier de test ça aurait été mieux.
Ce n'est pas comme si, les 2 codes sont exécutés puisque que tu ne quittes pas le sub avant l'étiquette erreur:
Ajouter devant Exit Sub
Mais tu n'a pas besoin d'un contrôle d'erreur pour traiter ça, affecte le .find à une variable range et teste son contenu après.
De plus j'ajouterai 2 paramètres au .find
Ce qui donnerait :
c est ensuite utilisable comme une référence de cellule.
Tu peux faire If c.Offset(1, 0) = "" Then
etc
eric
avec un fichier de test ça aurait été mieux.
Ce n'est pas comme si, les 2 codes sont exécutés puisque que tu ne quittes pas le sub avant l'étiquette erreur:
Ajouter devant Exit Sub
Mais tu n'a pas besoin d'un contrôle d'erreur pour traiter ça, affecte le .find à une variable range et teste son contenu après.
De plus j'ajouterai 2 paramètres au .find
Ce qui donnerait :
Dim c As Range
' ....
Set c = Cells.Find(What:=UserForm2.vdr, After:=ActiveCell, LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then
' nouveau
' ...
Else
' existant
' ...
End If
c est ensuite utilisable comme une référence de cellule.
Tu peux faire If c.Offset(1, 0) = "" Then
etc
eric