Erreur d’exécution '91'
Résolu
steph575
Messages postés
45
Statut
Membre
-
steph575 Messages postés 45 Statut Membre -
steph575 Messages postés 45 Statut Membre -
Bonjour,
J'ai créer une base de données, et je rencontre plusieurs petits problèmes.
J'ai actuellement 2063 ligne dans mon tableau "recap" Dans la fenêtre recherche, si j'entre un numéro qui n'existe pas j'ai un message d'erreur " Erreur d’exécution '91' : variable objet ou variable de bloc Whit non définie"
Si je clique sur Fin je sort de mon UserForm et si je clique sur Débogage, je me retrouve sur ma fenêtre de code.
Ma question est la suivante, comment faire, pour afficher simplement un message me disant que la référence entrée n'existe pas.

Mon second problème est que si une personne qui s'est servie de la base de donner, laisse des filtres actifs dans le tableau "récap", quand moi je vais vouloir faire une nouvelle entrée, le numéro "automatique" m'affiche le suivant après le filtre, alors que celui-ci est déjà pris.
Comment faire, pour que même des filtres activés, je peux continuer ma saisie sans risque.
Un grand merci à ceux qui me viendront en aide.
J'ai créer une base de données, et je rencontre plusieurs petits problèmes.
J'ai actuellement 2063 ligne dans mon tableau "recap" Dans la fenêtre recherche, si j'entre un numéro qui n'existe pas j'ai un message d'erreur " Erreur d’exécution '91' : variable objet ou variable de bloc Whit non définie"
Si je clique sur Fin je sort de mon UserForm et si je clique sur Débogage, je me retrouve sur ma fenêtre de code.
Ma question est la suivante, comment faire, pour afficher simplement un message me disant que la référence entrée n'existe pas.

Mon second problème est que si une personne qui s'est servie de la base de donner, laisse des filtres actifs dans le tableau "récap", quand moi je vais vouloir faire une nouvelle entrée, le numéro "automatique" m'affiche le suivant après le filtre, alors que celui-ci est déjà pris.
Comment faire, pour que même des filtres activés, je peux continuer ma saisie sans risque.
Un grand merci à ceux qui me viendront en aide.
10 réponses
Bonjour,
Question simple: quel est le separateur de decimale de votre EXCEL, un point ou une virgule??
Question simple: quel est le separateur de decimale de votre EXCEL, un point ou une virgule??
Bonjour,
Sans voir ton code.. impossible de te répondre.
Il faudrait également nous montrer la ligne de code sur laquelle apparaît le message d'erreur (lorsque tu fais débogage )
Sans voir ton code.. impossible de te répondre.
Il faudrait également nous montrer la ligne de code sur laquelle apparaît le message d'erreur (lorsque tu fais débogage )
Dim sepdec
Dim eng1 As Currency
Dim factur1 As Currency
Sub Macro1()
Load UserForm1
UserForm1.Show
End Sub
Private Sub BDC_Click()
End Sub
Private Sub CommandButton3_Click()
Unload Me
End Sub
Private Sub DF_Change()
End Sub
Private Sub ENG_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
sepdec = Application.International(xlDecimalSeparator)
If Chr(KeyAscii) = "." Or Chr(KeyAscii) = "," Then KeyAscii = Asc(sepdec)
If Chr(KeyAscii) <> "," Then
If Not IsNumeric(Chr(KeyAscii)) Then MsgBox ("Remplacer le point par une virgule !"): ENG.Text = "": Exit Sub
End If
End Sub
Private Sub FACTUR_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
sepdec = Application.International(xlDecimalSeparator)
If Chr(KeyAscii) = "." Or Chr(KeyAscii) = "," Then KeyAscii = Asc(sepdec)
If Chr(KeyAscii) <> "," Then
If Not IsNumeric(Chr(KeyAscii)) Then MsgBox ("Remplacer le point par une virgule !"): FACTUR.Text = "": Exit Sub
End If
End Sub
Private Sub Frame1_Click()
End Sub
Private Sub Frame2_Click()
End Sub
Private Sub Label51_Click()
End Sub
' enregistrement modifications dans la feuille BDCM
Private Sub MODIFS_Click()
Dim l As Integer
If MsgBox("confirmez-vous l'enregistrement des modifications ?", vbYesNo) = vbYes Then
With Sheets("RECAP")
l = .Columns(1).Find(RECHER, , , , xlByColumns, xlNext).Row 'pour rechercher la ligne correspondante
MsgBox l
' .Range("A" & l).Value = NUMBDCM
.Range("B" & l).Value = saisiss
.Range("C" & l).Value = DATE_BDCM
.Range("D" & l).Value = numda
.Range("E" & l).Value = TC
.Range("F" & l).Value = FORM
.Range("G" & l).Value = UNITE
.Range("H" & l).Value = DAT_ACHT
.Range("I" & l).Value = MOIS
eng1 = ENG
factur1 = FACTUR
.Range("AH" & l).Value = eng1
.Range("AG" & l).Value = factur1
.Range("J" & l).Value = OBJET
.Range("K" & l).Value = FOURNI
.Range("L" & l).Value = MARCHE
.Range("N" & l).Value = NUM_CDE
.Range("O" & l).Value = NUMFAC
.Range("T" & l).Value = CPV
.Range("V" & l).Value = COUT
.Range("AA" & l).Value = CF
.Range("AB" & l).Value = DF
.Range("AI" & l).Value = OBS
.Range("AJ" & l).Value = DATE_DP
.Range("AK" & l).Value = NUM_DP
.Range("AL" & l).Value = AEC
.Range("AM" & l).Value = DATE_CP
.Range("AN" & l).Value = CPC
.Range("AO" & l).Value = WFAE
.Range("AD" & l).Value = NUMCA
.Range("W" & l).Value = LG
.Range("R" & l).Value = PCE
.Range("it" & l).Value = TYP_DEP
End With
End If
' Vide les zones de saisie.
NUMBDCM = ""
saisiss = ""
numda = ""
ACTIV = ""
TC = ""
FORM = ""
ENG = "0,00"
FACTUR = "0,00"
UNITE = ""
DAT_ACHT = ""
MOIS = ""
OBJET = ""
FOURNI = ""
MARCHE = ""
NUM_CDE = ""
NUMFAC = ""
CPV = ""
COUT = ""
CF = ""
DF = ""
OBS = ""
DATE_DP = ""
NUM_DP = ""
AEC = ""
DATE_CP = ""
CPC = ""
WFAE = ""
NUMCA = ""
LG = ""
PCE = ""
RECHER = ""
TYP_DEP = ""
' Rend bouton Nvelle commande visible - cache bouton modifs
NVLLECMMDE.Visible = True
MODIFS.Visible = False
nouveau_num
End Sub
' enregistrement dans la feuille BDCM
Private Sub NVLLECMMDE_Click()
Dim l As Integer
If MsgBox("confirmez-vous l'entrée de cette nouvelle entrée ?") - vbYesNo Then
With Sheets("RECAP")
l = .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row + 1
'pour placer le nouvel enregistrement sur la dernière ligne
.Range("A" & l).Value = NUMBDCM
.Range("B" & l).Value = saisiss
.Range("C" & l).Value = DATE_BDCM
.Range("D" & l).Value = numda
.Range("E" & l).Value = TC
.Range("F" & l).Value = FORM
.Range("G" & l).Value = UNITE
.Range("H" & l).Value = DAT_ACHT
eng1 = ENG
factur1 = FACTUR
.Range("AH" & l).Value = eng1
.Range("AG" & l).Value = factur1
.Range("I" & l).Value = MOIS
.Range("J" & l).Value = OBJET
.Range("K" & l).Value = FOURNI
.Range("L" & l).Value = MARCHE
.Range("AD" & l).Value = NUMCA
.Range("N" & l).Value = NUM_CDE
.Range("O" & l).Value = NUMFAC
.Range("T" & l).Value = CPV
.Range("V" & l).Value = COUT
.Range("AA" & l).Value = CF
.Range("AB" & l).Value = DF
.Range("AI" & l).Value = OBS
.Range("AJ" & l).Value = DATE_DP
.Range("AK" & l).Value = NUM_DP
.Range("AL" & l).Value = AEC
.Range("AM" & l).Value = DATE_CP
.Range("AN" & l).Value = CPC
.Range("AO" & l).Value = WFAE
.Range("W" & l).Value = LG
.Range("R" & l).Value = PCE
.Range("it" & l).Value = TYP_DEP
End With
End If
' Vide les zones de saisie.
NUMBDCM = ""
saisiss = ""
numda = ""
TC = ""
FORM = ""
UNITE = ""
ENG = "0,00"
FACTUR = "0,00"
DAT_ACHT = ""
MOIS = ""
OBJET = ""
FOURNI = ""
MARCHE = ""
NUM_CDE = ""
NUMFAC = ""
CPV = ""
COUT = ""
CF = ""
DF = ""
OBS = ""
DATE_DP = ""
NUM_DP = ""
AEC = ""
DATE_CP = ""
CPC = ""
WFAE = ""
NUMCA = ""
LG = ""
PCE = ""
RECHER = ""
NUMCA = ""
Porteur = ""
NOMCA = ""
TYP_DEP = ""
nouveau_num
End Sub
Private Sub OUI_NON_Click()
End Sub
'Pour rechercher les infos
Private Sub RECHER_Change()
Dim l As Integer
With Sheets("RECAP")
l = .Columns(1).Find(RECHER, , , , xlByColumns, xlNext).Row
NUMBDCM = .Range("A" & l).Value
DATE_BDCM = .Range("C" & l).Value
saisiss = .Range("B" & l).Value
numda = .Range("D" & l).Value
TC = .Range("E" & l).Value
FORM = .Range("F" & l).Value
UNITE = .Range("G" & l).Value
DAT_ACHT = .Range("H" & l).Value
MOIS = .Range("I" & l).Value
FACTUR = .Range("AG" & l).Value
ENG = .Range("AH" & l).Value
OBJET = .Range("J" & l).Value
FOURNI = .Range("K" & l).Value
MARCHE = .Range("L" & l).Value
NUM_CDE = .Range("N" & l).Value
NUMFAC = .Range("O" & l).Value
CPV = .Range("T" & l).Value
COUT = .Range("V" & l).Value
CF = .Range("AA" & l).Value
DF = .Range("AB" & l).Value
OBS = .Range("AI" & l).Value
DATE_DP = .Range("AJ" & l).Value
NUM_DP = .Range("AK" & l).Value
AEC = .Range("AL" & l).Value
DATE_CP = .Range("AM" & l).Value
CPC = .Range("AN" & l).Value
WFAE = .Range("AO" & l).Value
LG = .Range("W" & l).Value
'PCE = .Range("R" & l).Value
'LIBCPV = .Range("U" & l).Value
'LIBPCE = .Range("S" & l).Value
'GM = .Range("P" & l).Value
'LIBGM = .Range("Q" & l).Value
'NUMCA = .Range("AD" & l).Value
'NOMCA = .Range("AF" & l).Value
'Porteur = .Range("AE" & l).Value
'TYP_DEP = .Range("it" & l).Value
End With
' Cache bouton nouvelle entrée (évite fausse manip enregistrement 2 fois mm commande)
' Rend visible le bouton modifs
NVLLECMMDE.Visible = False
MODIFS.Visible = True
End Sub
' Format de certaines cellules
Private Sub userform_activate()
Me.DATE_BDCM = Format(Date, "dd mmmm yyyy")
Me.FACTUR = Format("0,00")
Me.ENG = Format("0,00")
' par defaut rend visible le bouton nouvelle commande et invisible le bouton modifs
NVLLECMMDE.Visible = True
MODIFS.Visible = False
nouveau_num
End Sub
Private Sub nouveau_num()
Dim Ligne As Long
'numero de la 1ere commande
premnum = 1 ' à modifier si nécessaire
'première ligne vide en colonne A de RegFactures
Ligne = Sheets("RECAP").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row + 1
a = Sheets("RECAP").Range("A" & Ligne - 1).Value
' si cette valeur est le titre le n° sera celui indiqué dans la variable premnum (debut sub) sinon dernier n° + 1 (recuperation de la valeur des 5 derniers caractères à droite du dernier n°)
If a = "N°" Then numc = premnum Else numc = Val(Right(a, 5)) + 1
' composition de la fin du n° enregistrement avec 4 chiffres dont 0 au début (repete 0 autant de fois que 5 moins la longueur de numc)
ndc = WorksheetFunction.Rept("0", 5 - Len(numc)) & numc
NUMBDCM = ndc
End Sub
Private Sub WFAE_Change()
End Sub
Regarde comment se code l'utilisation de la méthode find
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel
En effet, mais dans l'exemple, comment remplacer le mot "trouver" par un numéro de ligne vu que ça va de 1 à 8000 ?
Je te remercie vraiment pour ton aide.
Je te remercie vraiment pour ton aide.
Option Explicit
Sub Cherche()
'déclaration des variables :
Dim Trouve As Range, PlageDeRecherche As Range
Dim Valeur_Cherchee As String, AdresseTrouvee As String
'********* à adapter ***********
'affectation de valeurs aux variables :
'on cherche le mot "Trouve"
Valeur_Cherchee = "Trouve"
'dans la première colonne de la feuille active
Set PlageDeRecherche = ActiveSheet.Columns(1)
'*******************************
'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
'traitement de l'erreur possible : Si on ne trouve rien :
If Trouve Is Nothing Then
'ici, traitement pour le cas où la valeur n'est pas trouvée
AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
Else
'ici, traitement pour le cas où la valeur est trouvée
AdresseTrouvee = Trouve.Address
End If
MsgBox AdresseTrouvee
'vidage des variables
Set PlageDeRecherche = Nothing
Set Trouve = Nothing
End Sub
le mot "trouver"
????
Quel mot ? A quelle ligne ?
Sachant que ce qui sert dans ce code c'est surtout
'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
'traitement de l'erreur possible : Si on ne trouve rien :
If Trouve Is Nothing Then
'ici, traitement pour le cas où la valeur n'est pas trouvée
AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
Else
'ici, traitement pour le cas où la valeur est trouvée
AdresseTrouvee = Trouve.Address
End If
Et pour le résultat... tu peux utiliser l'une des lignes suivantes :
AdresseTrouvee = Trouve.Address ' adresse complète ligne ET colonne AdresseTrouvee= Trouve.Rows 'Numéro de ligne AdresseTrouvee= Trouve.Columns ' Numéro de colonne
Peux tu me dire si cette-fois c'est juste ?
'Pour rechercher les infos
Private Sub RECHER_Change()
Dim l As Integer
With Sheets("RECAP")
'l = .Columns(1).Find(RECHER, , , , xlByColumns, xlNext).Row
SetTrouve = .Columns(1).Cells.Find(What:=RECHER, looKat:=xlWhole)
'Traitement de l'erreur possible. Si on ne trouve rien :
If Trouve Is Nothing Then
'Ici traitement pour le cas où la valeur n'est pas trouvée
Dim Trouve As Range
Else
'Ici traitement si la valeur est trouvée.
l = Trouve.Row
End If
Voilà ce que j'ai écrit.
Malheureusement cela ne fonctionne toujours pas,je ne parviens même plus à faire une recherche.
Merci pour ton aide.
Private Sub RECHER_Change ()
Dim Trouve As Range
With Sheets ("RECAP")
Set Trouve =.Columns(1).Cells.Fond(What:=RECHER,looKat:=xlWole)
If Trouve Is Nothing Then
Else
l=Trouve.Row
End If
Malheureusement cela ne fonctionne toujours pas,je ne parviens même plus à faire une recherche.
Merci pour ton aide.
Bon j'ai suivi vos conseils et voici mon codage.
Malheureusement, si je tape un numéro inexistant en effet le message d'erreur ne s'affiche plus, mais si je tape un numéro existant, rien ne se passe. Je ne peux donc plus rien modifier.
'Pour rechercher les infos
Private Sub Trouve()
Dim Trouve As Range
If Trouve Is Nothing Then
Else
l = Trouve.Row
End If
SetTrouve = .Columns(1).Cells.Find(RECHER, , xlValues, xlWhole)
NUMBDCM = .Range("A" & l).Value
DATE_BDCM = .Range("C" & l).Value
saisiss = .Range("B" & l).Value
numda = .Range("D" & l).Value
TC = .Range("E" & l).Value
FORM = .Range("F" & l).Value
UNITE = .Range("G" & l).Value
DAT_ACHT = .Range("H" & l).Value
MOIS = .Range("I" & l).Value
FACTUR = .Range("AG" & l).Value
ENG = .Range("AH" & l).Value
OBJET = .Range("J" & l).Value
FOURNI = .Range("K" & l).Value
MARCHE = .Range("L" & l).Value
NUM_CDE = .Range("N" & l).Value
NUMFAC = .Range("O" & l).Value
NUMCPV = .Range("T" & l).Value
COUT = .Range("V" & l).Value
CF = .Range("AA" & l).Value
DF = .Range("AB" & l).Value
OBS = .Range("AI" & l).Value
DATE_DP = .Range("AJ" & l).Value
NUM_DP = .Range("AK" & l).Value
AEC = .Range("AL" & l).Value
DATE_CP = .Range("AM" & l).Value
CPC = .Range("AN" & l).Value
WFAE = .Range("AO" & l).Value
LG = .Range("W" & l).Value
PCE = .Range("R" & l).Value
LIBCPV = .Range("U" & l).Value
LIBPCE = .Range("S" & l).Value
GM = .Range("P" & l).Value
LIBGM = .Range("Q" & l).Value
NUMCA = .Range("AD" & l).Value
NOMCA = .Range("AF" & l).Value
Porteur = .Range("AE" & l).Value
TYP_DEP = .Range("it" & l).Value
' Cache bouton nouvelle entrée (évite fausse manip enregistrement 2 fois mm commande)
' Rend visible le bouton modifs
NVLLECMMDE.Visible = False
MODIFS.Visible = True
End Sub
Malheureusement, si je tape un numéro inexistant en effet le message d'erreur ne s'affiche plus, mais si je tape un numéro existant, rien ne se passe. Je ne peux donc plus rien modifier.
Bonjour,
Avec ce que vous avez ecrit, m'etonnerai que vous n'ayez pas de msg d'erreur sur numero pas trouve
Comment ce fait-il que ca marche chez moi et pas chez vous
Sur numero existe, mettez un point d'arret sur la ligne Set trouve et passez le curseur souris sur le l et RECHER pour voir leur contenu
Et si marche toujours pas , mettez votre fichier a dispo sans donnees confidentielles, mais des donness quand meme.
Je viens de voir l'énormité dans votre code!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Faudrait peut-etre mettre le set trouve avant le test is nothing non!!!!!!!!!!!!!!!!!!!!!!!!
Et changer le code du test par
l = Trouve.Row
....
....
Avec ce que vous avez ecrit, m'etonnerai que vous n'ayez pas de msg d'erreur sur numero pas trouve
If Trouve Is Nothing Then 'ici y a pas de exit sub donc erreur Else l = Trouve.Row End If
Comment ce fait-il que ca marche chez moi et pas chez vous
Sur numero existe, mettez un point d'arret sur la ligne Set trouve et passez le curseur souris sur le l et RECHER pour voir leur contenu
Et si marche toujours pas , mettez votre fichier a dispo sans donnees confidentielles, mais des donness quand meme.
Je viens de voir l'énormité dans votre code!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Faudrait peut-etre mettre le set trouve avant le test is nothing non!!!!!!!!!!!!!!!!!!!!!!!!
Et changer le code du test par
If Trouve Is Nothing Then
exit sub
End If
l = Trouve.Row
....
....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Vous trouverez ici mon fichier.
https://www.cjoint.com/c/HIfiw2TyLCo
Encore merci pour votre aide !
https://www.cjoint.com/c/HIfiw2TyLCo
Encore merci pour votre aide !
Re,
Je regarde la chose.
Y a quand meme kake chose de curieux dans votre code, private sub trouve est lance comment et en plus ne correspond pas a l'image que vous avez mis au depart et le code sur cette image ne correspond pas a celui de votre fichier!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Autre anomalie l'userform2 (image) n'est jamais lancee!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Autre chose, sub Trouve et dim Trouve as range ca colle pas
Alors ou est-ce que ca coince, dans les procedures RECHER_Change ou ??????????????????????????????
Je regarde la chose.
Y a quand meme kake chose de curieux dans votre code, private sub trouve est lance comment et en plus ne correspond pas a l'image que vous avez mis au depart et le code sur cette image ne correspond pas a celui de votre fichier!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Autre anomalie l'userform2 (image) n'est jamais lancee!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Autre chose, sub Trouve et dim Trouve as range ca colle pas
Alors ou est-ce que ca coince, dans les procedures RECHER_Change ou ??????????????????????????????
Sans oublier qu'il n'y a plus le feuille d'indiquée dans la sub
Que le
est pas au bon endroit... (il est juste avant le else.... Oo ) Il devrait se trouver après le else....
Que la sub Trouve n'est jamais apellée.... ou alors je n'ai pas trouvé où ni par quoi
Et puis.. pourquoi en avoir fait un PRIVATE SUB ?
Pourquoi ne pas simplement avoir remplacé ton code de départ par les quelques lignes que je t'ai donné au lieu de vouloir utiliser (bêtement) la SUB fourni dans l'exemple du lien que je t'ai donné ????
Il ne suffit pas de copier/coller du code n'importe comment... il faut essayer de le comprendre !
Il faut aussi se relire pour éviter des anneries de END IF mal placés ...des variables non déclarées ....
De plus.. dire qu'un code ne "marche pas" ... ce n'est pas suffisant .
Le VBA a pour avantage de t'indiquer la ligne qui cloche... et tu disposes de différents moyents pour essayer de comprendre le souci... tel que les points d'arrêts et le mode pas à pas.
As tu un minimum de connaissances en programmation ?
Avant de continuer, prend une grande respiration.... et prend le temps de réflechir à ce que tu souhaites exactement réaliser (les étapes à suivre)....
(en gros :
Dans ma sub toto
A la ligne ...
Je veux chercher dans la feuille "machin" la valeur provenant de ma variable "bidule".
Si la recherche a trouvée quelque chose..; alors...
Sinon....
)
Une fois ce travail réalisé, tu devrais être en mesure d'utiliser les bouts de code qu'il te faut.
With Sheets("RECAP")
Que le
end if
est pas au bon endroit... (il est juste avant le else.... Oo ) Il devrait se trouver après le else....
Que la sub Trouve n'est jamais apellée.... ou alors je n'ai pas trouvé où ni par quoi
Et puis.. pourquoi en avoir fait un PRIVATE SUB ?
Pourquoi ne pas simplement avoir remplacé ton code de départ par les quelques lignes que je t'ai donné au lieu de vouloir utiliser (bêtement) la SUB fourni dans l'exemple du lien que je t'ai donné ????
Il ne suffit pas de copier/coller du code n'importe comment... il faut essayer de le comprendre !
Il faut aussi se relire pour éviter des anneries de END IF mal placés ...des variables non déclarées ....
De plus.. dire qu'un code ne "marche pas" ... ce n'est pas suffisant .
Le VBA a pour avantage de t'indiquer la ligne qui cloche... et tu disposes de différents moyents pour essayer de comprendre le souci... tel que les points d'arrêts et le mode pas à pas.
As tu un minimum de connaissances en programmation ?
Avant de continuer, prend une grande respiration.... et prend le temps de réflechir à ce que tu souhaites exactement réaliser (les étapes à suivre)....
(en gros :
Dans ma sub toto
A la ligne ...
Je veux chercher dans la feuille "machin" la valeur provenant de ma variable "bidule".
Si la recherche a trouvée quelque chose..; alors...
Sinon....
)
Une fois ce travail réalisé, tu devrais être en mesure d'utiliser les bouts de code qu'il te faut.
Je te remercie, je n'ai aucune connaissance en programmation et je le regrette.
C'est grâce à des exemples que j'en suis arrivé à faire cela.
C'est grâce à des exemples que j'en suis arrivé à faire cela.
Je reviens vers vous car je rencontre à nouveau un soucis, et n'ai pas trouvé de solution au problème.
Je m'explique.
Mon UserForm, renvoi dans mon "Récap_N1" les montant HT et TTC sous format "texte", ce qui a pour conséquence que mes formules dans mon onglet "Computation des seuils N1" ne fonctionnent pas.
Qui peux m'expliquer où est l'erreur dans ma programmation VBA
Merci d'avance.
Mon fichier : https://mon-partage.fr/f/a9c5wg0q/

Je m'explique.
Mon UserForm, renvoi dans mon "Récap_N1" les montant HT et TTC sous format "texte", ce qui a pour conséquence que mes formules dans mon onglet "Computation des seuils N1" ne fonctionnent pas.
Qui peux m'expliquer où est l'erreur dans ma programmation VBA
Merci d'avance.
Mon fichier : https://mon-partage.fr/f/a9c5wg0q/

Bonjour.
Hé oui j'ai encore un soucis, je souhaiterai intégrer dans la numérotation automatique un préfixe afin qu'elle apparaisse dans mon userForm comme ceci : N1 - 00001
Voici mon code, que dois-je modifier pour intégrer mon préfixe.
Hé oui j'ai encore un soucis, je souhaiterai intégrer dans la numérotation automatique un préfixe afin qu'elle apparaisse dans mon userForm comme ceci : N1 - 00001
Voici mon code, que dois-je modifier pour intégrer mon préfixe.
Private Sub nouveau_num()
Dim Ligne As Long
'numero de la 1ere commande
premnum = 1 'à modifier si nécessaire
Ligne = Sheets("Recap_N1").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row + 1
a = Sheets("Recap_N1").Range("A" & Ligne - 1).Value
If a = "N°" Then numc = premnum Else numc = Val(Right(a, 5)) + 1
ndc = WorksheetFunction.Rept("0", 5 - Len(numc)) & numc
NUM_SAF = ndc
Re, Ok
Colonnes G/H texte ald Numerique tout a fai normal vu le code
modif:
Je regarde pour le "N°". je suppose qu'il faut l'ajouter a toutes les lignes avant de faire modif ou ajout car pas possible pour recherche!!!
Colonnes G/H texte ald Numerique tout a fai normal vu le code
modif:
.Range("G" & l).Value = Format(CDbl(HT1), "0,00")
.Range("H" & l).Value = Format(CDbl(TTC1), "0,00")
Je regarde pour le "N°". je suppose qu'il faut l'ajouter a toutes les lignes avant de faire modif ou ajout car pas possible pour recherche!!!
Génial, c'est exactement ce que je souhaitais.
Une autre question.
Actuellement mes UserForm, renvoient les données dans deux feuilles séparées (Recap_N1 et Recap_N3), est t'il possible en plus d'envoyer ces données dans une troisième feuilles, mais qui celle-la reprendrai l'ensemble de toutes les données. Je ne sais pas si je me fais bien comprendre...
Une autre question.
Actuellement mes UserForm, renvoient les données dans deux feuilles séparées (Recap_N1 et Recap_N3), est t'il possible en plus d'envoyer ces données dans une troisième feuilles, mais qui celle-la reprendrai l'ensemble de toutes les données. Je ne sais pas si je me fais bien comprendre...
La modif peux rester je pense sur des feuilles d'origines, c'est surtout la copie qui m'intéresse beaucoup.
oui mais dans ce cas il ne faut pas que les deux userform soient identiques ?
perso j'ai essayé de reporter un code, mais je n'arrive à aucun résultat.
perso j'ai essayé de reporter un code, mais je n'arrive à aucun résultat.
Je t'explique, j'ai un UserForm pour les dépenses en N1 et un pour les dépenses en N3
Mais deux récaps sont différents, car les formules excel à l'intérieur sont elles aussi différentes.
C'est pour cela que je suis bloqué et que j'ai cherché à réunir les deux tableaux via une macro.
Ci-joint le lien pour mon dernier fichier. https://mon-partage.fr/f/uEnNFcNM/
Mais deux récaps sont différents, car les formules excel à l'intérieur sont elles aussi différentes.
C'est pour cela que je suis bloqué et que j'ai cherché à réunir les deux tableaux via une macro.
Ci-joint le lien pour mon dernier fichier. https://mon-partage.fr/f/uEnNFcNM/

convertir en nombre les infos textbox's pour modif et nouvelle
.Range("G" & l).Value = CDbl(HT1) .Range("H" & l).Value = CDbl(TTC1)