> Tous les forums > Forum Bureautique
 Suppression de lignes en VBASujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
ricken
  Posté le 26/11/2009 @ 09:25 
Aller en bas de la page 
Petit astucien

Bonjour,

Dans la colonne A, des noms. Je voudrais (en VBA) supprimer les lignes de tous les noms commençant par la lettre B.

Merci de votre réponse.

NB: Excel 97 sous XP

Publicité
ferrand
 Posté le 26/11/2009 à 09:54 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Par exemple:

Sub SupprimeLigne_B()
Dim i&
With ActiveSheet
For i = .Range("A65536").End(xlUp).Row To 1 Step -1
If .Cells(i, 1).Value <> "" Then
If Asc(.Cells(i, 1).Value) = 66 Or Asc(.Cells(i, 1).Value) = 98 Then
.Cells(i, 1).EntireRow.Delete
End If
End If
Next i
End With
End Sub

[A mettre dans un module standard - agit sur la feuille active]

ricken
 Posté le 26/11/2009 à 10:03 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Bonjour Ferrand,

Merci pour cette réponse si rapide qui fonctionne très bien.

Cependant, je ne comprends pas où la lettre B est codée. La value est 66 ou 98? Et si je veux supprimer les lignes commençant par A ou F ou Z??? Y-a-t-il une table avec la valeur des lettres quelque part?

Merci de tes futures explications

grodep
 Posté le 26/11/2009 à 10:40 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

oui tu peux créer toi meme la table en question pour connaitre le code des lettres :

Sub code_caract()
For i = 1 To 60
Range("A" & i) = i
Range("B" & i) = Chr(62 + i)
Next
End Sub

Sub code_caract()

For i = 1 To 60

Range("A" & i) = 62 + i

Range("B" & i) = Chr(62 + i)

Next

End Sub



Modifié par grodep le 26/11/2009 10:41
ricken
 Posté le 26/11/2009 à 10:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Ah bah oui, mais là faut le savoir

Je ne connaissais pas l'existence de cette table. Je comprends mieux la macro de Ferrand qui demande les minuscules et les majuscules.

Merci Grodep de ces lumineuses explications et à Ferrand pour le code

ferrand
 Posté le 26/11/2009 à 11:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Ce sont les codes ANSI des caractères concernés: 66=B et 98=b.

A à Z répondent aux codes 65 à 90. a à z aux codes 97 à 122. Attention, si tu utilises les codes, il s'agit là des caractères non accentués. Tu peux certainement trouver le jeu de caractères dans l'aide: attention toutefois, juqu'à 127 pas de problèmes (caractères ASCII), ce sont toujours les mêmes partout, par contre au-delà de 127 (ASCII étendu) cela peut varier selon les paramètres régionaux (et c'est dans cette zone que se situent les caractères accentués que nous utilisons).

Sous Excel pour connaître le code d'un caractère, utilise la fonction CODE [=CODE("A") te renverra 65 et =CODE("à") te renverra 224]. A l'inverse la fonction CAR renvoie le caractère à partir du code: =CAR(64) te donnera @ et =CAR(231), ç. En VBA, ces fonctions sont respectivement Asc() et Chr().

Une table vite faite : http://cjoint.com/?lAldOIopwQ

Les caractères proprement dits commencent à partir de 32 (espace). A noter aussi comme caractère invisible l'espace insécable (160).

ricken
 Posté le 26/11/2009 à 11:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Ouf!

Rien que ça. Je connaissais ALT + xx qui donne des caractères, des lettres ou d'autres trucs, mais je n'avais pas pensé l'utiliser dans une macro et pas sous les formes CODE ou CAR.

En faisant ALT + un chiffre < 32, on obtient divers trucs et variés (soleil, note de musique...)

Merci du tuyau, et j'ai gardé la table, ainsi que le code de Grodep.

ferrand
 Posté le 26/11/2009 à 12:08 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Une variante pour te permettre de choisir le caractère :

Sub SupprimeLigne()
Dim i&, c
Do
c = Application.InputBox("Saisir le caractère à rechercher en A pour supprimer la ligne correspondante.", _
"Suppression de lignes dans la feuille active", , , , , , 2)
If VarType(c) = vbString Then
If Len(c) > 1 Then
MsgBox "Saisir un seul caractère", vbInformation, "Saisie non valide"
Else
Exit Do
End If
Else
Exit Sub
End If
Loop
With ActiveSheet
For i = .Range("A65536").End(xlUp).Row To 1 Step -1
If .Cells(i, 1).Value <> "" Then
If Left(.Cells(i, 1).Value, 1) = c Then
.Cells(i, 1).EntireRow.Delete
End If
End If
Next i
End With
End Sub

Ça n'utilise plus le code ! Mais ça distingue majuscules et minuscules.

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
899,99 €Ultraportable 15.6 pouces Asus Vivobook S3500QA (OLED FHD, R7 5800H, 16Go, SSD 512 Go) à 899,99 €
Valable jusqu'au 25 Janvier

Cdiscount fait une promotion sur l'ultraportable Asus Vivobook S3500QA-L1184W qui passe à 899,95 € au lieu de 1049 €. Cet ordinateur dispose d'un superbe écran 15.6 pouces OLED FHD (1920x1080), d'un processeur AMD Ryzen 7 5800H (8 coeurs) avec chip Radeon Vega 8 intégré, 16 Go de RAM, un SSD NVMe de 512 Go et tourne sous Windows 11. Il ne pèse que 1,65 kg et propose une autonomie d'environ 8 heures.


> Voir l'offre
-68 %68 % de réduction sur l'abonnement de 2 ans à NordVPN
Valable jusqu'au 08 Février

NordVPN fait une promotion sur son abonnement 2 ans qui passe à 78,85 € au lieu de 243,78 € soit une réduction de 68 %. L'abonnement vous reviendra ainsi à 3,29 € / mois. Ce VPN sérieux et rapide vous permettra de surfer anonymement (pas de log conservé) mais également de chiffrer votre connexion en déplacement ou bien d'accéder aux contenus réservés aux internautes d'autres pays (pour les matchs de football retransmis sur les sites web de certaines tv étrangères par exemple). vous pourrez choisir parmi 5100 serveurs répartis dans 59 pays. 6 appareils peuvent utiliser simultanément le compte. 

 


> Voir l'offre
0 €Cartouche d’encre ou papier photo à 0 €
Valable jusqu'au 04 Février

InkClub offre une cartouche d'encre pour 0 €. Inscrivez la référence de votre imprimante dans la case de recherche. Vous serez ensuite dirigé vers la liste des produits prévus pour votre imprimante. Vous reconnaîtrez les offres à 0 € grâce aux symboles. Et si vous ne trouvez pas de cartouche pour votre imprimante à 0 €, vous pourrez vous tourner vers du papier photo.

L'offre n'est valide qu'une fois par client. Des frais de transport fixes s'ajoutant (4,95 €) n'hésitez pas à compléter votre commande avec d'autres cartouches notamment les modèles compatibles InkClub qui sont de bonne qualité.


> Voir l'offre

Sujets relatifs
Suppression de lignes à l'aide d'une macro
suppression de lignes
VBA excel macro suppression de lignes
suppression de lignes
Word suppression lignes vides (resolu)
automatisme de recopie de lignes
impression des lignes
Comparaison 3 lignes avec fichier
compter lignes d'un tableau dont toutes les cellules sont en couleur
Faire un tableau sur Excel avec des sauts de lignes
Plus de sujets relatifs à Suppression de lignes en VBA
 > Tous les forums > Forum Bureautique