XL 2010 recherche code vba pour supprimer une ligne

ccia

XLDnaute Nouveau
Bonjour le forum

étant un novice en vba, mais
Grace à un peu de lecture et aux différents tutos sur le site je suis en train de créer un fichier.

cependant je bute sur certains codes.

dans le fichier joint, je cherche à supprimer une ligne dans une feuille grâce à une donnée numérique venant d'une autres feuille.

la macro ce trouve dans le userform1 - commande du bouton2 (suppression)

essais : en allant sur la feuille "JOURNAL" je clic droit sur la souris en ligne 41 = saisie n°35
le userform 1 s'ouvre - je clic sur le bouton "suppression"
la ligne de la feuille " JOURNAL" ce vide bien
par contre sur la feuille "6023 A" la suppression ne s'effectue pas
IDEM pour MODIFIER

un deuxième soucis
dans le userform 2 : grâce au combobox je trouve la ligne correspondante (c'est ok) ; mais si je saisie directement la référence ; ca ne fonctionne pas.

merci d'avance
salutations
 

Pièces jointes

  • Compta-association V2.1.xlsm
    487.2 KB · Affichages: 11

Staple1600

XLDnaute Barbatruc
Bonjour ccia, le fil,

J'ai rajouté deux points
(et déclarer les variables)
Enrichi (BBcode):
Private Sub CommandButton2_Click()
Dim nbl As Long, i As Long
If MsgBox("ATTENTION - Vous allez supprimer la ligne sélectionée", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
    nbl = ActiveCell.Row ' donne une variante
    If nbl < 7 Then Exit Sub ' à partir de la ligne 7 sur la ligne selectionné
        Sheets("JOURNAL").Rows(nbl).ClearContents ' on efface toute la ligne
      ' RETIRER LES DONNEES DANS LA FEUILLE DE COMPTE CORRESPONDANTE ..... ETUDE EN COURS
    If ComboBox2.Value = "6023 A" Then
        With Sheets("6023 A")
            For i = 2 To .Range("A65000").End(xlUp).Row
                If .Cells(i, 500) = TextBox1.Value Then
                    .Rows(i).EntireRow.Delete
                End If
            Next
        End With
    End If
  
     If ComboBox2.Value = "60281 M" Then
        With Sheets("6023 A")
            For i = 2 To .Range("A65000").End(xlUp).Row
                If .Cells(i, 500) = TextBox1.Value Then
                    .Rows(i).EntireRow.Delete
                End If
            Next
        End With
    End If
    ' ETC ......
End If
    Worksheets("Systeme").Range("J4").ClearContents 'vide (oui) la cellule J4 de la feuille sytéme
    Unload UserForm1 'ferme la userform 1
End Sub
Pourquoi Cells(i,500) ?

Car si tu fais ce test, on se trouve en colonne SF
Code:
Sub test()
Dim i As Long
i = 8
MsgBox Cells(i, 500).Address
End Sub
 

ccia

XLDnaute Nouveau
bonjour JM
merci pour ton aide
effectivement il vaut mieux déclarer les variables, je viens de lire un petit cours la dessus ;
j'ai encore beaucoup à apprendre

- cells(i,500) = c'est une grosse erreur de ma part ; j'ai fait comme avec range
comme il s'agit de la colonne A (avec les numéros d'ordre il faut que je remplace le 500 par 1.

avec le boutondecommande1 (modification), je part sur le même principe
et je remplace : .Rows(i).EntireRow.Delete, PAR : ---
.Range("C & i").Value = TextBox3
.Range("D & i").Value = TextBox4
.Range("E & i").Value = ComboBox1
etc .....

je n'ai pas fini ce fichier et je vais certainement avoir besoin d'aides.
ce soir je saisie mes modifications et je reposerai certaines questions

encore merci
cordialement CCIA
 
Dernière édition:

ccia

XLDnaute Nouveau
Bonjour ccia, le fil,

J'ai rajouté deux points
(et déclarer les variables)
Enrichi (BBcode):
Private Sub CommandButton2_Click()
Dim nbl As Long, i As Long
If MsgBox("ATTENTION - Vous allez supprimer la ligne sélectionée", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
    nbl = ActiveCell.Row ' donne une variante
    If nbl < 7 Then Exit Sub ' à partir de la ligne 7 sur la ligne selectionné
        Sheets("JOURNAL").Rows(nbl).ClearContents ' on efface toute la ligne
      ' RETIRER LES DONNEES DANS LA FEUILLE DE COMPTE CORRESPONDANTE ..... ETUDE EN COURS
    If ComboBox2.Value = "6023 A" Then
        With Sheets("6023 A")
            For i = 2 To .Range("A65000").End(xlUp).Row
                If .Cells(i, 500) = TextBox1.Value Then
                    .Rows(i).EntireRow.Delete
                End If
            Next
        End With
    End If
 
     If ComboBox2.Value = "60281 M" Then
        With Sheets("6023 A")
            For i = 2 To .Range("A65000").End(xlUp).Row
                If .Cells(i, 500) = TextBox1.Value Then
                    .Rows(i).EntireRow.Delete
                End If
            Next
        End With
    End If
    ' ETC ......
End If
    Worksheets("Systeme").Range("J4").ClearContents 'vide (oui) la cellule J4 de la feuille sytéme
    Unload UserForm1 'ferme la userform 1
End Sub
Pourquoi Cells(i,500) ?

Car si tu fais ce test, on se trouve en colonne SF
Code:
Sub test()
Dim i As Long
i = 8
MsgBox Cells(i, 500).Address
End Sub
finalement voici mon code :
Bonjour ccia, le fil,

J'ai rajouté deux points
(et déclarer les variables)
Enrichi (BBcode):
Private Sub CommandButton2_Click()
Dim nbl As Long, i As Long
If MsgBox("ATTENTION - Vous allez supprimer la ligne sélectionée", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
    nbl = ActiveCell.Row ' donne une variante
    If nbl < 7 Then Exit Sub ' à partir de la ligne 7 sur la ligne selectionné
        Sheets("JOURNAL").Rows(nbl).ClearContents ' on efface toute la ligne
      ' RETIRER LES DONNEES DANS LA FEUILLE DE COMPTE CORRESPONDANTE ..... ETUDE EN COURS
    If ComboBox2.Value = "6023 A" Then
        With Sheets("6023 A")
            For i = 2 To .Range("A65000").End(xlUp).Row
                If .Cells(i, 500) = TextBox1.Value Then
                    .Rows(i).EntireRow.Delete
                End If
            Next
        End With
    End If
 
     If ComboBox2.Value = "60281 M" Then
        With Sheets("6023 A")
            For i = 2 To .Range("A65000").End(xlUp).Row
                If .Cells(i, 500) = TextBox1.Value Then
                    .Rows(i).EntireRow.Delete
                End If
            Next
        End With
    End If
    ' ETC ......
End If
    Worksheets("Systeme").Range("J4").ClearContents 'vide (oui) la cellule J4 de la feuille sytéme
    Unload UserForm1 'ferme la userform 1
End Sub
Pourquoi Cells(i,500) ?

Car si tu fais ce test, on se trouve en colonne SF
Code:
Sub test()
Dim i As Long
i = 8
MsgBox Cells(i, 500).Address
End Sub
bonjour JM
merci pour ton aide
effectivement il vaut mieux déclarer les variables, je viens de lire un petit cours la dessus ;
j'ai encore beaucoup à apprendre

- cells(i,500) = c'est une grosse erreur de ma part ; j'ai fait comme avec range
comme il s'agit de la colonne A (avec les numéros d'ordre il faut que je remplace le 500 par 1.

avec le boutondecommande1 (modification), je part sur le même principe
et je remplace : .Rows(i).EntireRow.Delete, PAR : ---
.Range("C & i").Value = TextBox3
.Range("D & i").Value = TextBox4
.Range("E & i").Value = ComboBox1
etc .....

ce soir je saisie mes modifications et je reposerai certaines questions



finalement voici le code trouvé
POUR SUPPRIMER
If ComboBox2.Value = "6023 A" Then
With Sheets("6023 A")
For i = .Range("A65000").End(xlUp).Row To 2 Step -1
If CStr(.Cells(i, 1)) = TextBox1.Value Then
.Rows(i).EntireRow.Delete Shift:=xlUp
End If
Next
End With
End If

If ComboBox2.Value = "60281 M" Then
With Sheets("60281 M")
For i = .Range("A65000").End(xlUp).Row To 2 Step -1
If CStr(.Cells(i, 1)) = TextBox1.Value Then
.Rows(i).EntireRow.Delete Shift:=xlUp
End If
Next
End With
End If

' ETC ......


ET POUR MODIFIER
If ComboBox2.Value = "6023 A" Then
With Sheets("6023 A")
For i = .Range("A65000").End(xlUp).Row To 2 Step -1
If CStr(.Cells(i, 1)) = TextBox1.Value Then
.Range("C" & i).Value = TextBox4
.Range("F" & i).Value = TextBox6
End If
Next
End With
End If


je n'ai pas fini ce fichier et je vais certainement avoir besoin d'aides.


encore merci
cordialement CCIA
 

Discussions similaires

Réponses
17
Affichages
1 K

Statistiques des forums

Discussions
315 166
Messages
2 116 922
Membres
112 912
dernier inscrit
amexlie