Communauté
Inventor - Français
Bienvenue sur les forums Inventor d’Autodesk. Partagez vos connaissances, posez des questions, collaborez sur des idées, et explorez les sujets Inventor populaires.
annuler
Affichage des résultats de 
Afficher  uniquement  | Rechercher plutôt 
Vouliez-vous dire : 

Supprimer une ligne quand cellule vide

6 RÉPONSES 6
RÉSOLU
Répondre
Message 1 sur 7
mferrandJER26
569 Visites, 6 Réponses

Supprimer une ligne quand cellule vide

Bonjour la communauté,

 

Le contexte est le suivant :

j'ai créé une Custom Table à 2 colonnes et 12 lignes. 

 

Le problème :

Je n'arrive pas a supprimer seulement les lignes ou j'ai une cellule vide, mais si j'ai une cellule vide toutes mes lignes se suppriment.

 

Ci-dessous, un extrait du programme. Extrait qui supprime toutes mes lignes et non pas seulement celles qui sont vides.

 

Je pense que la ligne de code "oRow.Delete" supprime toutes mes lignes et non pas celles que je veux.

 

Comment faire pour lui préciser la ligne que je veux supprimer ?

 

J'ai déjà fait le tour des forums aucunes réponses ne correspondent à mon problème.

 

Merci d'avance pour votre aide.

Dim oRow As Row
For Each oRow In oCustomTable.Rows
	For z = 0 To 22 Step 2
		If oContents(z) = "" Then
			oRow.Delete	
		ElseIf oContents(z) = "ok"	
		End If
	Next
Next

 

Étiquettes (6)
6 RÉPONSES 6
Message 2 sur 7
ThomasB44
en réponse à: mferrandJER26

Salut @mferrandJER26 

Le problème c'est que tu effaces une ligne dans la boucle For Next, mais la boucle est commencée, et le nombre de lignes à changé. Mais le programme lui, croit toujours qu'il y en a autant. Donc le code produit une erreur à la fin.

Après effacement d'une ligne il faut sortir de la boucle et rentrer à nouveau.

La j'ai créé une table sans changer les en-têtes de colonne, si la cellule est égale à 1, j'efface la ligne

 

' Set a reference to the drawing document.
Dim oDrawDoc As DrawingDocument
oDrawDoc = ThisApplication.ActiveDocument
    
'Define the drawing sheet
Dim oSheet As Sheet
oSheet  = oDrawDoc.Sheets.Item(1)

'Iterate through the contents of the table.
Dim i As Long
Dim oCustomTable As CustomTable
oCustomTable = oSheet.CustomTables.Item(1)

'look at each row
Dim oRowCount As Long

Start :
oRowCount = oCustomTable.Rows.Count
For i = 1 To oRowCount
	oRow = oCustomTable.Rows.Item(i)
	oContent = oRow.Item("Colonne 1")
	If oContent.Value = "1" Then 
		oRow.Delete
		GoTo Start
	End If
Next

 Voilà, je pense que c'était ça le problème.


Thomas
Mechanical Designer / Inventor Professionnal 2023
Inventor Professional EESignature

Message 3 sur 7
ThomasB44
en réponse à: mferrandJER26

Et n'ayant pas le reste de ton code, je n'ai pas compris ce qu'était ton oContent(z) :

If oContents(z) = "" Then
	oRow.Delete	
	ElseIf oContents(z) = "ok"	
End If 

 😉


Thomas
Mechanical Designer / Inventor Professionnal 2023
Inventor Professional EESignature

Message 4 sur 7
mferrandJER26
en réponse à: ThomasB44

Merci pour ta réponse @ThomasB44.

 

Mon "oContents" représente en fait les cellules de mon tableau. 

 

Un exemple :

oContents(0) est la cellule de la première colonne / première ligne. 

oContents(1) est la cellule de la deuxième colonne / première ligne. 

oContents(2) est la cellule de la première colonne / deuxième ligne. 

etc...

 

Ainsi les chiffres paires oContents(0), oContents(2), etc... appartiennent à la première colonne et les impaires   oContents(1), oContents(3), etc... à la deuxième colonne.

 

Donc avec oContents(z), je fais varier mon z entre 0 et 22 en pas de 2 comme ca je vérifie seulement les valeurs de ma première colonne. 

 

Message 5 sur 7
ThomasB44
en réponse à: mferrandJER26

Salut @mferrandJER26 

Moi pas comprendre...

Ta boucle For each oRow permet déjà d'itérer entre chaque ligne. Si tu souhaites itérer sur les colonnes en plus, il faut ajouter une 2ème boucle.

De plus, il faut lire le contenu de la cellule à l'intérieur de la boucle, comme je l'ai fait. Tu n'as pas besoin de ton oContents(z) pour lire le contenu des cellules. 🤔


Thomas
Mechanical Designer / Inventor Professionnal 2023
Inventor Professional EESignature

Message 6 sur 7
mferrandJER26
en réponse à: ThomasB44

Je viens d'essayer ce que tu as codé et ca marche parfaitement, effectivement je me suis compliqué la vie a rien ! 

 

Je te remercie en tout cas @ThomasB44 😉

Message 7 sur 7
patrick.emin
en réponse à: mferrandJER26

Bonjour @mferrandJER26 

Si une des réponses résout votre problème ou vous a permis de mieux le comprendre, voulez vous avoir l'amabilité de cliquer sur le bouton "Approuver la solution" en bas de la réponse qui apporte une solution?
Merci de ne pas accepter comme solution le message que vous êtes en train de lire.


Patrick Emin animateur de la communauté francophone


Vous avez trouvé un message utile? Alors donnez un "J'aime" à ce message!
Votre question a eu une réponse satisfaisante? Voulez vous avoir l'amabilité de cliquer sur le bouton
 APPROUVER LA SOLUTION  en bas de la réponse qui apporte une solution?
Signez notre Livre d'Or

Vous n'avez pas trouvé ce que vous recherchiez ? Posez une question à la communauté ou partagez vos connaissances.

Publier dans les forums  

Autodesk Design & Make Report