Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Effacer le contenu d'une ligne Excel

2 réponses
Avatar
Furion
Bonjour à tous !

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

2 réponses

Avatar
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
Avatar
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.