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

Effacement ligne tableau en vba

7 réponses
Avatar
Zepo
J'essaie de supprimer la ligne d'un tableau si elle=20
contient le signe # dans une de ses cellules..
Lors du d=E9roulement de la macro ci dessous, j'ai=20
constamment une erreur "le membre de la collection requis=20
n'existe pas" au niveau de la ligne For each LaLigne in=20
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 =3D Selection
For Each LaLigne In myRange.Rows
myRange.Find.Execute FindText:=3D"#"
If myRange.Find.Found =3D True Then
myRange.Rows.Delete
End If
Next LaLigne
End Sub

7 réponses

Avatar
circé
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


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





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

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

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




Avatar
Geo
Bonjour Zepo


Oki, oki

For Each oCell In Rang.Cells

Désolé....


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

--

A+

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