Modifications de cellule via un bouton "Modifier"
Bonjour,
Etant novice dans le domaine de la VBA, je souhaiterais comprendre pour quelles raisons ma macro ci-dessous ne fonctionne pas. En effet, j'ai beau chercher je ne comprends pas pourquoi la fonction du bouton "modifier" effectue systématiquement un aller et retour à ma valeur de recherche...
La première cellule est bien prise en compte mais en ce qui concerne les autres, elles reviennent à leur valeur de départ sans être modifiées.
Je vous remercie beaucoup par avance pour votre aide qui sera plus que la bienvenue !
Private Sub ComboBox5_Click() 'valeur de remonter
Dim numerodeligneDepart As Long
Dim NumerodeLigneoujedoismepositionner As Long
Dim NumeroEnregistrementDansListeAffichee As Long 'car il y a plus d'un million de ligne dans excel 2010
numerodeligneDepart = 2
NumeroEnregistrementDansListeAffichee = Me.ComboBox5.ListIndex
NumerodeLigneoujedoismepositionner = NumeroEnregistrementDansListeAffichee + numerodeligneDepart
If Me.ComboBox5.ListIndex < 0 Then GoTo sortiePasDedonnee 'car il n'y a rien à supprimer
Rows(NumerodeLigneoujedoismepositionner & ":" & NumerodeLigneoujedoismepositionner).Select
'Rows(NumeroEnregistrementDansListeAffichee & ":" & NumeroEnregistrementDansListeAffichee).Delete
'CheckBox5 = Range("V" & NumerodeLigneoujedoismepositionner).Value
ComboBox1 = Range("E" & NumerodeLigneoujedoismepositionner)
ComboBox2 = Range("C" & NumerodeLigneoujedoismepositionner)
TextBox1 = Range("F" & NumerodeLigneoujedoismepositionner)
ComboBox4 = Range("D" & NumerodeLigneoujedoismepositionner)
TextBox10 = Range("J" & NumerodeLigneoujedoismepositionner)
TextBox11 = Range("G" & NumerodeLigneoujedoismepositionner)
ComboBox3 = Range("H" & NumerodeLigneoujedoismepositionner)
TextBox12 = Range("k" & NumerodeLigneoujedoismepositionner)
TextBox8 = Range("B" & NumerodeLigneoujedoismepositionner)
With Range("I" & NumerodeLigneoujedoismepositionner & ":B" & NumerodeLigneoujedoismepositionner) 'Code permettant de modifier le format de la plage de cellule en format nombre
.NumberFormat = "dd/mm/yyyy"
.Value = .Value
With Range("J" & NumerodeLigneoujedoismepositionner)
.NumberFormat = "#,##0.00 $"
.Value = .Value
'ici on vide les textboxs pour eviter de reloader le userform comme tu le fesait avant
End With
End With
GoTo sortie
sortiePasDedonnee:
MsgBox "Vous n'avez pas selectionner de numero d'entree"
sortie:
End Sub
Private Sub CommandButton2_Click() 'modif
Dim lgn As Long
Dim Numero_de_Ligne_Depart As Long
Dim Numero_de_Ligne_active As Long 'car il y a plus d'un million de ligne dans excel 2010
Dim Numero_Enregistrement_Dans_Liste_Affichee As Long
If MsgBox("Confirmez-vous cette midification ?", vbYesNo, "Demande de confirmation") = vbNo Then
Exit Sub
Else
Numero_de_Ligne_Depart = 2
Numero_Enregistrement_Dans_Liste_Affichee = Me.ComboBox5.ListIndex
Numero_de_Ligne_active = Numero_Enregistrement_Dans_Liste_Affichee + Numero_de_Ligne_Depart
If Numero_Enregistrement_Dans_Liste_Affichee > 0 Then 'car il n'y a rien à supprimer
Range("E" & Numero_de_Ligne_active).Value = ComboBox1.Value
Range("C" & Numero_de_Ligne_active).Value = ComboBox2.Value
Range("F" & Numero_de_Ligne_active).Value = TextBox1.Value
Range("D" & Numero_de_Ligne_active).Value = ComboBox4.Value
Range("J" & Numero_de_Ligne_active).Value = TextBox10.Value
Range("G" & Numero_de_Ligne_active).Value = TextBox11.Value
Range("H" & Numero_de_Ligne_active).Value = ComboBox3.Value
Range("k" & Numero_de_Ligne_active).Value = TextBox12.Value
Range("B" & Numero_de_Ligne_active).Value = TextBox8.Value
'Code permettant de modifier le format de la plage de cellule en format nombre
With Range("I" & Numero_de_Ligne_active & ":B" & Numero_de_Ligne_active)
.NumberFormat = "dd/mm/yyyy"
.Value = .Value
With Range("J" & Numero_de_Ligne_active)
.NumberFormat = "#,##0.00 $"
.Value = .Value
End With
End With
' Affiche une boîte de message
MsgBox ("Information inséré dans la feuille") 'Vous informant que le présent contact est insérer dans votre tableau Excel.
Unload Me ' Vide et ferme l'Userform ( formulaire)
Saisie.Show 'Affiche le formulaire
ActiveWorkbook.Save
End If
End If
End SubBonjour,
je ne fais jamais de userform mais ...
quand j'écrit
with XXXXXX, j'écris de suite le end with et puis j'insère les lignes de code entre les 2..
idem pour IF/ENDIF
Il te manque des morceaux dans ce code
Et si tu indentais, tu verrais plus clair aussi:
Ceci s'installe facilement et par clic droit dans le module VBA, tu clic droit et tu aura le choix d'indenter le code
P.
Merci beaucoup pour cette application
Malheureusement elle ne prend pas en charge office 2010, version sur laquelle je travaille
Merci encore.
mica-caso a écrit :Merci beaucoup pour cette application
Malheureusement elle ne prend pas en charge office 2010, version sur laquelle je travaille
Merci encore.
Elle l'est chez moi sur 2007-2010-2016 !
Bonjour,
Il faut commencer par rectifier les erreurs soulevées par Patrick... Plus quelques autres éléments : individualiser tes bloc With qui sont indépendant et n'ont aucune raison d'être imbriqués ; je trouverais aussi appréciable une qualification systématique des expressions (voir un Range non précédé d'un point me dérange !
Après il faudra s'interroger sur la bonne tenue du code ! Utilité de renommer ses contrôles et utiliser des boucles... Utilité de l'indenter (c'est à la portée de n'importe qui ! Il suffit de savoir appuyer sur la touche Tab !), aussi d'éviter certains détours (on peut dire que tu musardes pas mal !), mais bon déjà avec des noms de variables à rallonges... (moi qui trouve que c'est déjà long à écrire quand ça dépasse 3 caractères !
Mais priorité à la rectification des erreurs, une relecture devrait suffire pour y parvenir, et si tu en profites pour indenter, tu verras tout de suite les éléments manquants !
Pour la suite si tu souhaites que des intervenants se penchent plus sérieusement sur ton code, ce sera avec classeur, car on ne fait rien de sérieux sans voir à quoi le code s'applique.
Cordialement.
Merci beaucoup pour vos commentaires
Je prends avec attention vos remarques et reviens ici pour vous faire part des modifications.
Merci a vous pour le temps passé sur le sujet
Merci beaucoup pour vos commentaires
Je prends avec attention vos remarques et reviens ici pour vous faire part des modifications.
Merci a vous pour le temps passé sur le sujet
mica-caso a écrit :NumeroEnregistrementDansListeAffichee As Long
je dirais même