Signaler

Manipulation objet: designer une autre colonne ? [Résolu]

Posez votre question mod77 1234Messages postés vendredi 10 juillet 2009Date d'inscription 9 octobre 2017 Dernière intervention - Dernière réponse le 3 oct. 2017 à 23:09 par mod77
Bonjour,

Je ne maitrise pas du tout les codes objets et cherche à contrôler si une colonne est vide pour agir, mais je ne sais comment faire (ligne en gras).

Voici mon code:

Open "D:\Votants.csv" For Output As #1

For Each oL In Plage.Rows 'pour chaque ligne de la plage
if colonne Q de la même ligne est vide then 'si la colonne "Q" est vide faire
Tmp = ""
For Each oC In oL.Cells 'pour chaque colonne de ligne
Tmp = Tmp & CStr(oC.Text) & Sep
Next
Tmp = Left(Tmp, Len(Tmp) - 1) 'supression du dernier séparateur
Print #1, Tmp 'impression dans le fichier CSV
End If
Next
Close 'ferme le fichier CSV

Quelqu'un saura-t-il m'aider, svp?


Utile
+0
plus moins
bonsoir, je suggère:
If oL.Cells(1, "Q") = Empty Then
mod77 1234Messages postés vendredi 10 juillet 2009Date d'inscription 9 octobre 2017 Dernière intervention - 3 oct. 2017 à 21:15
bonsoir yg_be,

je te remercie pour le code . Néanmoins pourquoi le '1' ?
ne serait-ce pas '6' dans mon cas ? Car la plage va de la ligne 6 à la dernière.

J'aimerais comprendre la méthode 'oL.Cells'
Répondre
yg_be 3576Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 19 octobre 2017 Dernière intervention - 3 oct. 2017 à 21:19
comme oL contient une ligne, oL.Cells(1, "Q") correspond à la colonne Q de la première ligne de cette ligne.
Répondre
mod77 1234Messages postés vendredi 10 juillet 2009Date d'inscription 9 octobre 2017 Dernière intervention - 3 oct. 2017 à 22:04
je l'ai mis ainsi:
For Each oL In Plage.Rows 'pour chaque ligne de la plage
If oL.Cells(1, "Q") = Empty Then

mais je n'ai pas le tri que je souhaite.
Répondre
Donnez votre avis
Utile
+0
plus moins
tu n’obtiens pas ce que tu souhaites. qu’obtiens-tu? rien, trop, pas assez?
si tu supprimes le test, qu'obtiens-tu?
es-tu certain que Plage soit correct?
je te suggère d'ajouter
option explicit
en début de module.
tu ne montres qu'une partie de ton code, es-tu certain que le reste est correct?
mod77 1234Messages postés vendredi 10 juillet 2009Date d'inscription 9 octobre 2017 Dernière intervention - 3 oct. 2017 à 22:49
en supprimant le test j'ai toutes les lignes de plage.
Avec le test j'ai la même chose.
mon code:

Sub ExporteCSV()
Dim Plage As Object, oL As Object, oC As Object, Tmp As String, chemin As String, Sep$

chemin = "D:\monfichier.xlsm"
Worksheets("Votes").Select
Sep = ","

'Définie la plage de recherche
Set Plage = ActiveSheet.Range("B6:C" & ActiveSheet.Range("C65000").End(3).Row)

'Crée dans emplacement nom du fichier CSV
Open "D:\Votants.csv" For Output As #1

For Each oL In Plage.Rows 'pour chaque ligne de la plage
If oL.Cells(1, "Q") = Empty Then 'si la colonne "Q" est vide faire sinon changer de ligne
Tmp = ""
For Each oC In oL.Cells 'pour chaque colonne de ligne
Tmp = Tmp & CStr(oC.Text) & Sep
Next
Tmp = Left(Tmp, Len(Tmp) - 1) 'supression du dernier séparateur
Print #1, Tmp 'impression dans le fichier CSV
End If
Next
Close 'ferme le fichier CSV
End Sub
Répondre
Donnez votre avis
Utile
+0
plus moins
mieux ainsi?
If Plage.Parent.Cells(oL.Cells(1, 1).Row, "Q") = Empty Then

 
mod77 1234Messages postés vendredi 10 juillet 2009Date d'inscription 9 octobre 2017 Dernière intervention - 3 oct. 2017 à 23:09
merci yg_be :-)
ca fonctionne!
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !