Besoin d'un pro du VBA
Thomas
-
le père -
le père -
Bonjour à tous ,
Voici un programme que j'ai codé :
Sub PHASE2_ESSAIFINAL1()
Sheets("TEST_PHASE_2").Select
For Each c In Range("A:A")
If Not c.Value Like "^[A-Za-z]{2}[0-9]{6}" And Not IsEmpty(c) Then
c.EntireRow.Delete
End If
Next c
End Sub
L'objectif est le suivant : :
Dans la colonn A j'ai près de 6000 projets que je veux trier. Ils ont tous un nom composé de Caractères ( lettres ou chiffres ).
Les deux premiers caractères sont TOUJOURS des lettres et je m'en fiche .
Par contre je veux éliminer tous les projets ( donc les lignes ) donc les noms ont des lettres après le 2nd item.
Ainsi : il faut qu'il garde AA012325 mais qu'il supprime tout ce qui est AANV1234 ou encore AA01X010
En gros que dès qu'il y a une lettre après les deux premiers item ( quelque soit la lettre ) je voudrais que le programme m'enlève la ligne .
Or le programme codé ( je pensais qu'il marchait au début ) ne m'élimine qu'un projet sur 2 ... Bizarre.
Merci d'avance pour vos réponses car étant novice je suis perdu.
Voici un programme que j'ai codé :
Sub PHASE2_ESSAIFINAL1()
Sheets("TEST_PHASE_2").Select
For Each c In Range("A:A")
If Not c.Value Like "^[A-Za-z]{2}[0-9]{6}" And Not IsEmpty(c) Then
c.EntireRow.Delete
End If
Next c
End Sub
L'objectif est le suivant : :
Dans la colonn A j'ai près de 6000 projets que je veux trier. Ils ont tous un nom composé de Caractères ( lettres ou chiffres ).
Les deux premiers caractères sont TOUJOURS des lettres et je m'en fiche .
Par contre je veux éliminer tous les projets ( donc les lignes ) donc les noms ont des lettres après le 2nd item.
Ainsi : il faut qu'il garde AA012325 mais qu'il supprime tout ce qui est AANV1234 ou encore AA01X010
En gros que dès qu'il y a une lettre après les deux premiers item ( quelque soit la lettre ) je voudrais que le programme m'enlève la ligne .
Or le programme codé ( je pensais qu'il marchait au début ) ne m'élimine qu'un projet sur 2 ... Bizarre.
Merci d'avance pour vos réponses car étant novice je suis perdu.
A voir également:
- Besoin d'un pro du VBA
- Clé windows 10 pro 64 bits gratuit - Guide
- Cool edit pro - Télécharger - Édition & Montage
- Ccleaner pro gratuit - Télécharger - Optimisation
- I14 pro max - Accueil - Guide téléphones
- Redmagic 10 pro test - Accueil - Téléphones
4 réponses
Bonjour
Je n'ai pas testé, mais je suppose que ton erreur est due au fait que quand tu effaces une ligne, la suite est "retassée" vers le haut. La ligne suivante prend la place de la ligne effacée. Quand le for each passe à la ligne suivante, en fait il saute une ligne.
Il faudrait faire un while avec un numéro de ligne et ne pas incrémenter le numéro de ligne s'il y a eu effacement.
Je n'ai pas testé, mais je suppose que ton erreur est due au fait que quand tu effaces une ligne, la suite est "retassée" vers le haut. La ligne suivante prend la place de la ligne effacée. Quand le for each passe à la ligne suivante, en fait il saute une ligne.
Il faudrait faire un while avec un numéro de ligne et ne pas incrémenter le numéro de ligne s'il y a eu effacement.
utilise:
--> texte.Split("chose a couper")
sur un texte pour le découper en supprimant normalement la partie couper Attention renvoye un tableau de string (ac les partie des phrases)
-->texte.Replace( "texte a remplacer" , "replacer par")
en entrant "" a la place de "remplacer par", le texte a remplacer sera tout simplement supprimer
Voila 2 methodes, tu peux en trouvé d'autre
Ca permet de simplifier le trie a mon avis
--> texte.Split("chose a couper")
sur un texte pour le découper en supprimant normalement la partie couper Attention renvoye un tableau de string (ac les partie des phrases)
-->texte.Replace( "texte a remplacer" , "replacer par")
en entrant "" a la place de "remplacer par", le texte a remplacer sera tout simplement supprimer
Voila 2 methodes, tu peux en trouvé d'autre
Ca permet de simplifier le trie a mon avis