Bug remplissage tableau excel avec macro et userform

Fermé
myckie08 Messages postés 114 Date d'inscription lundi 30 novembre 2009 Statut Membre Dernière intervention 29 novembre 2017 - 22 juin 2013 à 20:58
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 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:

1 réponse

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
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.

cdlt
0