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 Sub

Bonjour,

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 ! VBA devra aller chercher la feuille active... il est mieux, plus précis et plus fiable que la feuille soit toujours explicite, et elle peut être mise sous bloc With...)

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

Rechercher des sujets similaires à "modifications via bouton modifier"