Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/09/2011, 15h00   #1
Nouveau Membre du Club
 
Inscription : septembre 2010
Messages : 77
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 77
Points : 25
Points : 25
Par défaut Formule pour récuperer valeur d'une cellule à partir d'une autre

Bonjour à tous.

Je cherche un moyen de récuperer la valeur d'une cellule pour l'attribuer à une autre de la manière qui suit.

J'ai un tableau avec mes 12 mois. Dans la colonne C je saisie via une textbox le dernier relevé d'energie d'une facture.
Celui de janvier viens en C4. Si j'ai une facture en février , la valeur de B5 = C4 et ma saise du relevé viens en C5 ( comme ça je peux calculer la difference (C5 - B5) du mois, ici février)
Or selon le poste que je traite je n'ai pas des factures tout les mois et des fois la prochaine est 2 ou 3 mois aprés.

Comment récuperer la dernière valeur saisie de la colonne C pour la mettre dans la colonne B du mois ou il y a une facture.

Exemple Janvier Saisie C4

Avril Saisie C7 et doit récuperer C4 en B7

J'avais pensé a un code avec des if ( si cellule précédente vide alors voir cellule d'avant et ainsi de suite jusqu'à en trouver une avec une valeur) Mais je pense que c'est long surtout pour le mois de Décembre car cela ferait 11 conditions.......)
Merci par avance
toushusss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 15h40   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

La première du code suivant te donne la dernière cellule remplie de la colonne C; la seconde t'indique seulement que le relevé du mois doit être positionné après :

Code :
1
2
Set c = [C:C].Find("*", , , , xlByRows, xlPrevious)
[C7] = Me.TextBox1.Text
Tu copies ensuite la valeur de c en colonne B.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 16h19   #3
Nouveau Membre du Club
 
Inscription : septembre 2010
Messages : 77
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 77
Points : 25
Points : 25
Merci DANIEL
Super ça marche comme je le souhaitai.
Juste pour ma culture VBA, pourquoi les 4 "," dans le code ?
toushusss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 17h23   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
La méthode "Find" possède un tas de paramètres qu'il est d'ailleurs un peu dangereux de ne pas renseigner; soit tu mets des virgules, ainsi, xlbyrows est le 5e paramètre de la commande, ou tu indiques le nom du paramètre :

Code :
Set c = [C:C].Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious)
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h15.


 
 
 
 
Partenaires

Hébergement Web