Problème au niveau de on error goto
Résolu
sikasika
Messages postés
71
Date d'inscription
Statut
Membre
Dernière intervention
-
sikasika Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
sikasika Messages postés 71 Date d'inscription Statut Membre Dernière intervention -
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
- Mise a niveau windows 7 vers 10 - Accueil - Mise à jour
- Eespt technical error ✓ - Forum TNT / Satellite / Réception
- Clé de mise à niveau windows 7 gratuit - Guide
- 4 images 1 mot niveau 10 chaperon rouge ✓ - Forum Jeux vidéo
- Fan error lenovo - Forum Refroidissement
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