01net    Web


Actuellement en ligne : 124 Utilisateurs dont 4 dans Programmation et développement >S'inscrire      >S'identifier      >Recherche      >Aide  
modéré par A.Ouloube, smilblick, Nico5779, Zplay, Beno@  
01net > Forum de 01net > Programmation et développement > .net / Technologies MS
> [Excel-Macro]Range à fin variable (selection de last ligne)
Passionné(e) d'internet, de logiciels, de forums ? 01net recrute...
Auteur
Message
 
<     1       >
Marco-x
  
   
      ?   @     Posté le 22/04/2008 14:18:05  
Voter pour ce message
Bonjour,

Dans l'idée je remplace toute les cases vides d'une colonne par une formule, ça marche bien en sois mais j'aimerais que cela s'arrete au bas du tableau (un total) peu importe le nombre de lignes rajoutées (Les users auront le droit d'en rajouter à volonter)
Un bout de code est plus explicite :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Fin As Range
Dim CaseFin As String
Dim LigneFin As Integer 'Aucune idée du type à adopter

'LigneFin = ?? là je bloque !
CaseFinH = "H" & LigneFin

Set Fin = Range("H10:" & CaseFinH)
For Each macell In Range("H10:" & CaseFinH)
If macell = "" Then
macell.Formula = "=+R[0]C[-1]*R[0]C[-2]-R[0]C[-3]"
End If
Next
End Sub


Je ne sais pas de quel type doit etre LigneFin, ni comment definir sa valeur par la denière ligne remplie de la feuille.
Et bien sur il ya peut être des erreurs dans mon code à vous de me dire.
Ca doit être tout simple mais ça ne marche pas :/

En espérant avoir de vos nouvelles.

Marc
fl78
  
   
      ?   @     Posté le 15/05/2008 18:45:37  
Voter pour ce message
Bonjour Marco-x

Si je comprends bien, tu cherche à inserer une formule dans la première cellule vide de la colonne H.

Premiére solution :
'Pas de lignefin
'Récupére la derniére cellule non vide de la colonne à partir de H10
casefin = Range("H10").End(xlDown).Address
'Selectionne la cellule
Range(casefin).Select
'Selectionne la cellule directement en dessous
ActiveCell.Offset(1, 0).Range("A1").Select

'Le .End peut être utilisé avec
(xlUp) : recherche vers le haut
(xlDown) : recherche vers le bas
(xlToLeft) : recherche vers la gauche
(xlToRight): recherche vers la droite
puis :
.Address : renvoie l'adresse de la cellule sous la forme $A$1
.Column : renvoi le numéro de la colonne
.Row : renvoi le numéro de la ligne


Deuxième solution :
'Recherche de la première cellule vide de la colonne à partir de H10
With Worksheets("MaFeuille").Range("H10:H65535")
Set c = .Find("", LookIn:=xlValues)
If Not c Is Nothing Then
Position = c.Address
Range(Position).Select
End If
End With

Aprés une de ces deux solutions, tu mets ta formule

ATTENTION : Dans les deux cas, il ne faut pas avoir de cellules vides sinon ta macro s'arrétera;

Si tu veux lire l'ensemble des cellules de la colonne à partir de H10 comme tu le fais, utilise le .End tel que je l'ai écrit plus haut pour récupérer la dernière ligne et tu peux définir LigneFin as string.

Voila, j'ai tendance à détailler beaucoup et je m'en excuse si je suis trop "scolaire".

Bon développement
<     1       >

01net > Forum de 01net > Programmation et développement > .net / Technologies MS
> [Excel-Macro]Range à fin variable (selection de last ligne)

Aller à :

Page générée en : 0.067s - X2board 2.2

Nous contacter | Charte de confiance | Voir notice légale

Tous droits réservés © 1999 - 2008 Groupe Tests - 01net.


Sites du réseau 01net Network : 01net - 01men - Rmc.fr - Bfmtv.fr - Radiobfm.com - TousLesPodcasts - Micro Achat - Caractere.net -
Electronique.biz - Mesures.com - Transaction.fr

Entretien du PC
Un logiciel simple et pratique pour optimiser les performances et la stabilité de votre PC.
TOP TELECHARGEMENTS
Découvrez notre sélection de logiciels indispensables et les meilleurs outils de création numérique !