Effacement ligne tableau en vba

Le
Zepo
J'essaie de supprimer la ligne d'un tableau si elle
contient le signe # dans une de ses cellules..
Lors du droulement de la macro ci dessous, j'ai
constamment une erreur "le membre de la collection requis
n'existe pas" au niveau de la ligne For each LaLigne in
myRange.Rows et je ne vois pas vraiment pourquoi

Merci d'avance.

Sub Macro1()
Dim myRange As Selection, LaLigne As Row
Selection.WholeStory
Set myRange = Selection
For Each LaLigne In myRange.Rows
myRange.Find.Execute FindText:="#"
If myRange.Find.Found = True Then
myRange.Rows.Delete
End If
Next LaLigne
End Sub
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
circé
Le #32035
Bonjour,

Tu peux peut-être t'inspirer de cette macro d'anacoluthe qui est dans la
faq :
http://faqword.free.fr/articles.php?lng=fr&pgh3

Circé




J'essaie de supprimer la ligne d'un tableau si elle
contient le signe # dans une de ses cellules..
Lors du déroulement de la macro ci dessous, j'ai
constamment une erreur "le membre de la collection requis
n'existe pas" au niveau de la ligne For each LaLigne in
myRange.Rows et je ne vois pas vraiment pourquoi...

Merci d'avance.

Sub Macro1()
Dim myRange As Selection, LaLigne As Row
Selection.WholeStory
Set myRange = Selection
For Each LaLigne In myRange.Rows
myRange.Find.Execute FindText:="#"
If myRange.Find.Found = True Then
myRange.Rows.Delete
End If
Next LaLigne
End Sub


Le #32031
J'ai fait une tentative de réadaptation mais maintenant
toutes les lignes sont éffacées les unes après les
autres ...

Public Sub Tableau()
'macro écrite par Anacoluthe
On Error Resume Next
Dim oTable As Table
Dim oRow As Row
Dim oCell As Cell
For Each oTable In ActiveDocument.Tables
For Each oRow In oTable.Rows
For Each oCell In Range.Cells
oCell.Range.Find.Execute FindText:="#"
If oCell.Range.Find.Found = True Then
oRow.Range.Delete
End If
Next oCell
Next oRow
Next oTable
End Sub





-----Message d'origine-----
Bonjour,

Tu peux peut-être t'inspirer de cette macro d'anacoluthe
qui est dans la

faq :
http://faqword.free.fr/articles.php?lng=fr&pgh3

Circé




J'essaie de supprimer la ligne d'un tableau si elle
contient le signe # dans une de ses cellules..
Lors du déroulement de la macro ci dessous, j'ai
constamment une erreur "le membre de la collection
requis


n'existe pas" au niveau de la ligne For each LaLigne
in


myRange.Rows et je ne vois pas vraiment pourquoi...

Merci d'avance.

Sub Macro1()
Dim myRange As Selection, LaLigne As Row
Selection.WholeStory
Set myRange = Selection
For Each LaLigne In myRange.Rows
myRange.Find.Execute FindText:="#"
If myRange.Find.Found = True Then
myRange.Rows.Delete
End If
Next LaLigne
End Sub
.





Anacoluthe
Le #32029
Bonjour !

'Zepo' nous a écrit ...
Lors du déroulement de la macro ci dessous, j'ai
constamment une erreur "le membre de la collection requis
n'existe pas" au niveau de la ligne For each LaLigne in
myRange.Rows et je ne vois pas vraiment pourquoi...


Rows (lignes de *tableau*) est propriété d'une Table (tableau)!!!
Si MyRange contient au moins un *tableau*, les lignes de
ce tableau sont la collection MyRange.Tables(1).Rows

Comprenez que MyRange.Rows n'a aucun sens : rien n'oblige
un Range (votre Selection) à disposer d'une Table !

Utilisez l'explorateur d'objets pour comprendre à quel
point VBA est d'une logique simplissime :-D

Vous devriez mettre un test pour vérifier qu'il y a au
moins une table dans la sélection sinon votre macro
va planter encore à la moindre mauvaise utilisation
hors tableau... Bonne continuation

Anacoluthe
« Il est très difficile d'imaginer quelque chose de simple. »
- Pierre MAC ORLAN

Anacoluthe
Le #31536
Bonjour !

'' nous a écrit ...
...
'macro écrite par Anacoluthe
...
For Each oCell In Range.Cells


OOOOOOOOOOOOO moi j'aurais écrit ça ???????????????????

Anacoluthe
« La plus sûre façon de faire passer quelqu'un
pour un crétin est de le citer. »
- Robert BENCHLEY

Zepo
Le #31534
Oki, oki

For Each oCell In Rang.Cells

Désolé....




-----Message d'origine-----
Bonjour !

'' nous a écrit ...
...
'macro écrite par Anacoluthe
...
For Each oCell In Range.Cells


OOOOOOOOOOOOO moi j'aurais écrit ça ???????????????????

Anacoluthe
« La plus sûre façon de faire passer quelqu'un
pour un crétin est de le citer. »
- Robert BENCHLEY
.




Geo
Le #30529
Bonjour Zepo


Oki, oki

For Each oCell In Rang.Cells

Désolé....


Ouf
tu viens de rendre son honneur à notre Anacoluthe national.

--

A+

Anacoluthe
Le #30013
Bonjour ! --- j'ai supprimé le [HS] de l'ami Geo

'Geo' nous a écrit ...
Oki, oki
For Each oCell In Rang.Cells


Ouf
tu viens de rendre son honneur à notre Anacoluthe national.


Pas certain : je ne vois toujours pas d'où vient l'objet 'Rang'
:-D )))


J'en profite pour donner un conseil important à tous nos
amis débutants en VBA :

Ne modifiez ***JAMAIS*** une macro dans laquelle vous lisez
On Error Resume Next
Cette instruction saute les erreurs : il vous sera impossible
de détecter une erreur de syntaxe comme une simple faute de
frappe. Le résultat de la macro peut devenir alors aberrant.
Cette instruction est faite pour traiter une erreur prévisible
lors de l'exécution (dans ma macro d'origine il s'agissait
du cas toujours possible d'un document actif ne comportant
/aucun/ tableau : son rôle était donc très précis).
Ce que vous devez TOUJOURS faire :
Commencez par *désactiver* cette instruction (en commentaire)
REM On Error Resume Next
Modifiez la macro et surtout testez-là dans tous les cas !
Ensuite et si besoin seulement rétablissez la gestion d'erreur
On Error Resume Next


Voilà, j'ai supprimé le [HS] de l'ami Geo
car je pense qu'il s'agit bien du sujet de ce fil ....


Anacoluthe
« Les erreurs sont les portes de la découverte. »
- James JOYCE


Publicité
Poster une réponse
Anonyme