Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
XL 2010recherche code vba pour supprimer une ligne
é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.
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 .....
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
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
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.
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.