Dernière ligne d'une colonne
Bonjour pourriez vous m'aider je cherche à indiquer a ma macro la dernière ligne de chacune des colonnes.
Private Sub action(plage As Range, nomFichier As String, cellule As Range)
With ActiveSheet.UsedRange
Dim oL As Object, oC As Object, Tmp As String, Sep$
Sep = ";"
Open "\\195.1.1.70\seriem\" & nomFichier & ".csv" For Output As #1
For Each oL In plage.Rows
Tmp = ""
For Each oC In oL.Cells
Tmp = Tmp & CStr(oC.Text) & Sep
Next
Print #1, Tmp
Next
End With
Close
cellule.Interior.ColorIndex = 43
End Sub
Private Sub action_Click()
Range("H13").Interior.Color = RGB(242, 242, 242)
Range("H15").Interior.Color = RGB(242, 242, 242)
Range("H17").Interior.Color = RGB(242, 242, 242)
Range("H19").Interior.Color = RGB(242, 242, 242)
Range("H21").Interior.Color = RGB(242, 242, 242)
Range("H23").Interior.Color = RGB(242, 242, 242)
Call action(Sheets("Commande Achat OPALE").Range("A1:C" & Sheets("Commande Achat OPALE").Range("C981").End(3).Row), "FMPRO\INJECTEUR\FINJBDA_I0401", Range("H13"))
Call action(Sheets("Commande Client PARITYS Entete").Range("A1:O" & Sheets("Commande Client PARITYS Entete").Range("O981").End(3).Row), "INJECTEUR\DLignes_OPALE___", Range("H15"))
Call action(Sheets("Commande Client PARITYS Lignes").Range("A1:G" & Sheets("Commande Client PARITYS Lignes").Range("G981").End(3).Row), "INJECTEUR\DLignes_OPALE___", Range("H17"))
Call action(Sheets("Commande Client PARITYS Message").Range("A1:B" & Sheets("Commande Client PARITYS Message").Range("B1").End(3).Row), "INJECTEUR\DMessages_OPALE___", Range("H19"))
Call action(Sheets("Commande Client PARITYS Log").Range("A1:B" & Sheets("Commande Client PARITYS Log").Range("B1").End(3).Row), "INJECTEUR\DLog_OPALE___", Range("H21"))
Range("H23").Interior.Color = RGB(227, 165, 41)
End Submerci par avance
Morgan
Bonjour,
Pour colonne C par exemple :
derlig=cells(rows.count,"C").end(xlup).row
ou directement sa valeur :
v=cells(rows.count,"C").end(xlup).value
eric
Merci Eric Peux tu me montrer comment l'intégrer ici , merci par avance
Call action(Sheets("Commande Achat OPALE").Range("A1:C" & Sheets("Commande Achat OPALE").Range("C981").End(3).Row), "FMPRO\INJECTEUR\FINJBDA_I0401", Range("H13"))sans doute :
With Sheets("Commande Achat OPALE")
Call Action(.Range("A1:C" & .Cells(Rows.Count, "C").End(xlUp).Row), "FMPRO\INJECTEUR\FINJBDA_I0401", Range("H13"))
End WithBonjour Et merci encore,
j'ai encore mon problème je pensais que ça le résoudrait, dans mon fichier excel j'ai une formule qui dit si la condition n'est pas remplie, mettre "" ce qui ne doit pas être interprétée par la macro comme vide ? du coup mes lignes vides apparaissent dans mon fichier csv du moins les séparateurs ;;;;;;
Aurais tu une idée?
je te remercie par avance
Private Sub action(plage As Range, nomFichier As String, cellule As Range)
With ActiveSheet.UsedRange
Dim oL As Object, oC As Object, Tmp As String, Sep$
Sep = ";"
Open "\\195.1.1.70\seriem\" & nomFichier & ".csv" For Output As #1
For Each oL In plage.Rows
Tmp = ""
For Each oC In oL.Cells
Tmp = Tmp & CStr(oC.Text) & Sep
Next
Print #1, Tmp
Next
End With
Close
cellule.Interior.ColorIndex = 43
End Sub
Private Sub action1_Click()
Range("H13").Interior.Color = RGB(242, 242, 242)
Range("H15").Interior.Color = RGB(242, 242, 242)
Range("H17").Interior.Color = RGB(242, 242, 242)
Range("H19").Interior.Color = RGB(242, 242, 242)
Range("H21").Interior.Color = RGB(242, 242, 242)
Range("H23").Interior.Color = RGB(242, 242, 242)
With Sheets("Commande Achat OPALE")
Call action(.Range("A1:C" & .Cells(Rows.Count, "C").End(xlUp).Row), "FMPRO\INJECTEUR\FINJBDA_I0401", Range("H13"))
End With
With Sheets("Commande Client PARITYS Entete")
Call action(.Range("A1:O" & .Cells(Rows.Count, "O").End(xlUp).Row), "INJECTEUR\DEntetes_OPALE___", Range("H15"))
End With
With Sheets("Commande Client PARITYS Lignes")
Call action(.Range("A1:G" & .Cells(Rows.Count, "G").End(xlUp).Row), "INJECTEUR\DLignes_OPALE___", Range("H17"))
End With
With Sheets("Commande Client PARITYS Message")
Call action(.Range("A1:B" & .Cells(Rows.Count, "B").End(xlUp).Row), "INJECTEUR\DMessages_OPALE___", Range("H19"))
End With
With Sheets("Commande Client PARITYS Log")
Call action(.Range("A1:B" & .Cells(Rows.Count, "B").End(xlUp).Row), "INJECTEUR\DLog_OPALE___", Range("H21"))
End With
Range("H23").Interior.Color = RGB(227, 165, 41)
End SubJ'ai eu l'idée de copier en valeur les colonnes dans une nouvelle feuille et après d'appliquer la macro, mais les lignes vides apparaissent toujours
une idée ?
Merci par avance
Bonjour,
une cellule avec une formule n'est pas vide.
Pour un csv que tous les séparateurs de champ apparaissent c'est normal. Sinon comment veux-tu qu'il sache que "toto" est la 3ème valeur si les 2 premières sont vide ?
eric
Merci pour ta réponse,
d'où l'intéret de passer par une page intermédiaire tmp_OPALE par exemple dans laquelle j'ai copié en valeur donc les résltat en "" sont transformée en cellule vide, jusque la j'ai bon ?
de ce fait lors que j'applique la macro sur cette nouvelle page elle devrait etre considérée comme vide ces lignes non? et de ce fait ne pas être prise par la macro? A moins qu'excel stock quelque par que ces lignes sont issues d'un quelconque traitement antérieur?
Merci
jusque la j'ai bon ?
si tu obtiens ce que tu veux, oui...
Alors cela n'a pas fonctionné, donc j'ai eu l'idée de remplacer mes champs vides par AAAAAAA dans mes formules,
Puis j'ai supprimer toutes les lignes dont ma cellule colonne A contenait AAAAAAA
Merci je met en résolu