Après avoir passé une bonne partie de la nuit à résoudre mon problème, je
dois me résigner et vous le soumettre en espérant que qqun pourra m'aider.
J'ai un tableau comportant 2 colonnes. La 1ère contient un numéro
d'immatriculation et la seconde le type de la voiture correspondante.
Je veux qu'après avoir saisi le numéro d'immatriculation via un userform, la
ligne contenant le numéro désigné soit effacée. J'ai essayé ça mais ça marche
pas :
Numero_a_supprimer = Textbox1
Nombre_de_lignes = 10
For Compteur = 2 To Nombre_de_lignes
If Cells(compteur,1) = Numero_a_supprimer Then
Cells(compteur,1) = ""
Cells(compteur,2) = ""
End If
Next
Qqun pourrait me mettre au moins sur la voie ? Merci d'avance à tous
P.S. : Je suis obligé d'utiliser des variables pour désigner mes numéro de
ligne et de colonne car l'utilisateur peut aussi rajouter des lignes
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gloops
Furion a écrit, le 26/04/2005 06:09 :
Numero_a_supprimer = Textbox1 Nombre_de_lignes = 10 For Compteur = 2 To Nombre_de_lignes If Cells(compteur,1) = Numero_a_supprimer Then Cells(compteur,1) = "" Cells(compteur,2) = "" End If Next
Bonjour,
Un mois cette semaine ? Hum, peut-être as-tu eu la réponse sur microsoft.public.fr.excel ?
Ce que tu dis là devrait marcher, pour avoir une ligne blanche là où tu avais le numéro à supprimer dans la première colonne.
Pour supprimer la ligne, ça pourrait ressembler à ça : Set F = ActiveWorkbook.Worksheets("Feuil1") Ligne = Application.Match(F.Range("cle"), F.Range("colonne")) If Cells(Ligne, 1) = F.Range("cle") then F.Rows(Ligne).Delete Endif
Il te reste quelques cas à gérer : - argument de recherche non trouvé (fait déjà l'objet du test : à vérifier) - argument de recherche se trouvant au début ou à la fin de la liste, et risquant de compromettre le nom de champ portant sur la liste
Furion a écrit, le 26/04/2005 06:09 :
Numero_a_supprimer = Textbox1
Nombre_de_lignes = 10
For Compteur = 2 To Nombre_de_lignes
If Cells(compteur,1) = Numero_a_supprimer Then
Cells(compteur,1) = ""
Cells(compteur,2) = ""
End If
Next
Bonjour,
Un mois cette semaine ?
Hum, peut-être as-tu eu la réponse sur microsoft.public.fr.excel ?
Ce que tu dis là devrait marcher, pour avoir une ligne blanche là où tu
avais le numéro à supprimer dans la première colonne.
Pour supprimer la ligne, ça pourrait ressembler à ça :
Set F = ActiveWorkbook.Worksheets("Feuil1")
Ligne = Application.Match(F.Range("cle"), F.Range("colonne"))
If Cells(Ligne, 1) = F.Range("cle") then
F.Rows(Ligne).Delete
Endif
Il te reste quelques cas à gérer :
- argument de recherche non trouvé (fait déjà l'objet du test : à vérifier)
- argument de recherche se trouvant au début ou à la fin de la liste, et
risquant de compromettre le nom de champ portant sur la liste
Numero_a_supprimer = Textbox1 Nombre_de_lignes = 10 For Compteur = 2 To Nombre_de_lignes If Cells(compteur,1) = Numero_a_supprimer Then Cells(compteur,1) = "" Cells(compteur,2) = "" End If Next
Bonjour,
Un mois cette semaine ? Hum, peut-être as-tu eu la réponse sur microsoft.public.fr.excel ?
Ce que tu dis là devrait marcher, pour avoir une ligne blanche là où tu avais le numéro à supprimer dans la première colonne.
Pour supprimer la ligne, ça pourrait ressembler à ça : Set F = ActiveWorkbook.Worksheets("Feuil1") Ligne = Application.Match(F.Range("cle"), F.Range("colonne")) If Cells(Ligne, 1) = F.Range("cle") then F.Rows(Ligne).Delete Endif
Il te reste quelques cas à gérer : - argument de recherche non trouvé (fait déjà l'objet du test : à vérifier) - argument de recherche se trouvant au début ou à la fin de la liste, et risquant de compromettre le nom de champ portant sur la liste
Gloops
Gloops a écrit, le 23/05/2005 04:49 :
Pour supprimer la ligne, ça pourrait ressembler à ça : Set F = ActiveWorkbook.Worksheets("Feuil1") Ligne = Application.Match(F.Range("cle"), F.Range("colonne")) If Cells(Ligne, 1) = F.Range("cle") then F.Rows(Ligne).Delete Endif
Le lecteur aura corrigé, j'ai fait mon test avec un tableau commençant à la ligne 1. Il convient d'ajouter à Ligne : F.Range("colonne").Row - 1
A noter que c'est une mauvaise idée de placer plusieurs tableaux côte à côte. Il est vrai que sinon on peut s'en tirer avec une syntaxe du style Set F = Worksheets("Feuil1") Set T = F.Range("tableau") Ligne = Application.Match(F.Range("cle"), F.Range("colonne")) F.Range(T.Cells(Ligne, 1), T.Cells(Ligne, 2)).Delete (xlUp)
colonne est un nom de champ appliqué à la première colonne du champ tableau, celui-ci ayant deux colonnes de large ; le choix des noms de champs est sûrement criticable ...
(cette fois Ligne est à conserver comme calculé ci-dessus, puisque c'est un décalage par rapport au début du tableau et non de la feuille.
Gloops a écrit, le 23/05/2005 04:49 :
Pour supprimer la ligne, ça pourrait ressembler à ça :
Set F = ActiveWorkbook.Worksheets("Feuil1")
Ligne = Application.Match(F.Range("cle"), F.Range("colonne"))
If Cells(Ligne, 1) = F.Range("cle") then
F.Rows(Ligne).Delete
Endif
Le lecteur aura corrigé, j'ai fait mon test avec un tableau commençant à
la ligne 1. Il convient d'ajouter à Ligne : F.Range("colonne").Row - 1
A noter que c'est une mauvaise idée de placer plusieurs tableaux côte à
côte.
Il est vrai que sinon on peut s'en tirer avec une syntaxe du style
Set F = Worksheets("Feuil1")
Set T = F.Range("tableau")
Ligne = Application.Match(F.Range("cle"), F.Range("colonne"))
F.Range(T.Cells(Ligne, 1), T.Cells(Ligne, 2)).Delete (xlUp)
colonne est un nom de champ appliqué à la première colonne du champ
tableau, celui-ci ayant deux colonnes de large ; le choix des noms de
champs est sûrement criticable ...
(cette fois Ligne est à conserver comme calculé ci-dessus, puisque c'est
un décalage par rapport au début du tableau et non de la feuille.
Pour supprimer la ligne, ça pourrait ressembler à ça : Set F = ActiveWorkbook.Worksheets("Feuil1") Ligne = Application.Match(F.Range("cle"), F.Range("colonne")) If Cells(Ligne, 1) = F.Range("cle") then F.Rows(Ligne).Delete Endif
Le lecteur aura corrigé, j'ai fait mon test avec un tableau commençant à la ligne 1. Il convient d'ajouter à Ligne : F.Range("colonne").Row - 1
A noter que c'est une mauvaise idée de placer plusieurs tableaux côte à côte. Il est vrai que sinon on peut s'en tirer avec une syntaxe du style Set F = Worksheets("Feuil1") Set T = F.Range("tableau") Ligne = Application.Match(F.Range("cle"), F.Range("colonne")) F.Range(T.Cells(Ligne, 1), T.Cells(Ligne, 2)).Delete (xlUp)
colonne est un nom de champ appliqué à la première colonne du champ tableau, celui-ci ayant deux colonnes de large ; le choix des noms de champs est sûrement criticable ...
(cette fois Ligne est à conserver comme calculé ci-dessus, puisque c'est un décalage par rapport au début du tableau et non de la feuille.