Bug remplissage tableau excel avec macro et userform
Fermé
myckie08
Messages postés114Date d'inscriptionlundi 30 novembre 2009StatutMembreDernière intervention29 novembre 2017
-
22 juin 2013 à 20:58
Frenchie83
Messages postés2240Date d'inscriptionlundi 6 mai 2013StatutMembreDernière intervention11 août 2023
-
23 juin 2013 à 07:17
Bonjour,
Je solicite votre aide car j'ai écrit un ensemble de macro sur excel pour mon taf ce fichier permet a l'aide d'un userform, de remplir une fiche contenue dans un onglet avec les donnée saisie dans l'userform, ces données sont stockées dans un tableau qui est dans un autre onglet, jusque là aucun pb tout fonctionne correctement se qui pose pb c'est lorsque l'utilisateur souhaite modifier sa saisie, cette partie qui utilise le tableau afin de recuperer les données et remplir l'userform afin que l'utilisateur puisse faire sa modif pose pb car lors de la validation des modifs les valeurs du tableau sont mal modifier a cela je veut dir parfois la cellule est vide, parfois il y a une inversion de l'emplacement des données ou alors un decalage d'une ligne (le titre de la colonne + le contenue du dessous remonte d'une ligne). Là ou cela est embettant c'est que sa ne le fait pas tout le temps et en mode debuggage aucun soucis. Je vous laisse un exemple de code ci dessous pour vous expliquer un peut la macro :
Public Function RempliTabApresModif()
Dim NumMC As String
Dim Version As String
Dim DateCrea As String
Dim Secteur As String
Dim Atelier As String
Dim Poste As String
Dim Piece As String
Dim Moyen As String
Dim Origine As String
Dim NumA5 As String
Dim Risque As String
Dim ActionARealiser As String
Dim QuiExecute As String
Dim QuelPoste As String
Dim Frequence As String
Dim CommentExecute As String
Dim DateFeuilleBaton As String
Dim Commentaire As String
Dim CommentPhoto1 As String
Dim CommentPhoto2 As String
Dim ActionPourlevee As String
Dim LigneNumMc As String
Dim DerniereLigneEnString As String
Dim Emplacement As Range
Dim Emplacement2 As Range
Dim Jour As String
Dim Mois As String
Dim Annee As String
Dim IhmModif As Object
Set IhmModif = UserForm3
NumMC = IhmModif.TextBox_NumMc.Value
Version = IhmModif.ComboBox_Version.Value
DateCrea = IhmModif.TextBox_Date.Value
Secteur = IhmModif.ComboBox_Secteur.Value
Atelier = IhmModif.ComboBox_Atelier.Value
Poste = IhmModif.TextBox_Poste.Value
Piece = IhmModif.ComboBox_Piece.Value
Moyen = IhmModif.TextBox_Moyen.Value 'Cette partie rempli mes variables
NumA5 = IhmModif.TextBox_NumA5.Value avec le contenue de l'userform
Origine = IhmModif.TextBox_Defaut.Value
Risque = IhmModif.TextBox_Risque.Value
ActionARealiser = IhmModif.TextBox1.Value
QuiExecute = IhmModif.TextBox2.Value
QuelPoste = IhmModif.TextBox3.Value
CommentExecute = IhmModif.TextBox5.Value
Jour = IhmModif.ComboBoxJour.Value
Mois = IhmModif.ComboBoxMois.Value
Annee = IhmModif.ComboBoxAnnee.Value
DateFeuilleBaton = Jour + "/" + Mois + "/" + Annee
ActionPourlevee = IhmModif.TextBox9.Value
LigneNumMc = RechercheLigneNumMc(NumMC) 'recherche de la ligne contenant la valeur
de la variable afin de réecrire sur la
Dim ObjImg As Object meme ligne
Sheets("ListeMc").Select
Range("A" & LigneNumMc).Interior.Color = vbRed
Range("B" & LigneNumMc).Value = NumMC
Range("D" & LigneNumMc).Value = CDate(DateCrea)
Range("E" & LigneNumMc).Value = Secteur
Range("F" & LigneNumMc).Value = Atelier
Range("G" & LigneNumMc).Value = Poste
Range("H" & LigneNumMc).Value = Piece
Range("I" & LigneNumMc).Value = Moyen 'remplissage des differentes cellule avec
Range("J" & LigneNumMc).Value = NumA5 les variables
Range("K" & LigneNumMc).Value = Origine
Range("L" & LigneNumMc).Value = Risque
Range("M" & LigneNumMc).Value = ActionARealiser
Range("N" & LigneNumMc).Value = QuiExecute
Range("O" & LigneNumMc).Value = QuelPoste
If IhmModif.OptionButton_Unitaire.Value = True Then
Frequence = "X"
Else
Frequence = IhmModif.TextBox1_FreqPrecise.Value
End If
Range("P" & LigneNumMc).Value = Frequence
Range("Q" & LigneNumMc).Value = CommentExecute
Range("R" & LigneNumMc).Value = CDate(DateFeuilleBaton)
If IhmModif.OptionButtonPhoto.Value = True Then
Range("W" & LigneNumMc).Value = ""
If IhmModif.NewNomPhoto1 = "" Then
Else
On Error Resume Next
ActiveSheet.Shapes(NumMC + "1").Select
Selection.Delete
Set Emplacement = Range("S" & LigneNumMc)
Set ObjImg = ActiveSheet.Shapes.AddPicture(IhmModif.NewNomPhoto1, msoFalse, msoCTrue, Emplacement.Left, Emplacement.Top, Emplacement.Width, Emplacement.Height)
'Set objImg = ActiveSheet.Pictures.Insert(IhmSaisie.NomFichierPhoto1)
'Set Emplacement = Range("S" & DerniereLigneEnString)
'Set objImg = ActiveSheet.DrawingObjects(ActiveSheet.Shapes.Count)
ObjImg.Name = NumMC + "1"
Range("U" & LigneNumMc).Value = IhmModif.TextBox10.Value
End If
If IhmModif.NewNomPhoto2 = "" Then
Else
'Set objImg = ActiveSheet.Pictures.Insert(IhmSaisie.NomFichierPhoto2)
On Error Resume Next
ActiveSheet.Shapes(NumMC + "2").Select
Selection.Delete
Set Emplacement2 = Range("T" & LigneNumMc)
Set ObjImg = ActiveSheet.Shapes.AddPicture(IhmModif.NewNomPhoto2, msoFalse, msoCTrue, Emplacement2.Left, Emplacement2.Top, Emplacement2.Width, Emplacement2.Height)
'Set objImg = ActiveSheet.DrawingObjects(ActiveSheet.Shapes.Count)
ObjImg.Name = NumMC + "2"
Range("V" & LigneNumMc).Value = IhmModif.TextBox11.Value
End If
Else
Range("W" & LigneNumMc).Value = IhmModif.TextBox_Commentaire.Value
Range("U" & LigneNumMc).Value = ""
Range("V" & LigneNumMc).Value = ""
On Error Resume Next
ActiveSheet.Shapes(NumMC + "1").Select
Selection.Delete
On Error Resume Next
ActiveSheet.Shapes(NumMC + "2").Select
Selection.Delete
End If
Range("X" & LigneNumMc).Value = ActionPourlevee
Range("AB" & LigneNumMc).Value = IhmModif.OptionButtonPhoto.Value
Range("AE" & LigneNumMc).Value = IhmModif.TextBoxMotifChangeVer.Value
If IhmModif.ComboBoxChangeVersion.Value <> "" Then
Range("C" & LigneNumMc).Value = Version
Else
End If
End Function
voila je reprecise que mon pb se produit aléatoirement et ne touche pas toujours les memes cellules
merci d'avance pour votre aide
A voir également:
Bug remplissage tableau excel avec macro et userform
Frenchie83
Messages postés2240Date d'inscriptionlundi 6 mai 2013StatutMembreDernière intervention11 août 2023337 23 juin 2013 à 07:17
Bonjour
Difficile d'analyser sans voir l'architecture du fichier.
Si tu pouvais le mettre en pièce jointe (avec un minimum de données factices) ce serai plus facile pour ceux qui veulent bien t'aider.
d'autre part, dans ton programme, tu fais appel à la fonction RechercheLigneNumMc(NumMC), dont on ne voit aucune trace , peut-être que l'anomalie se trouve là-dedans.