petit probleme de plage

  • Initiateur de la discussion david
  • Date de début
D

david

Guest
Bonsoir à toutes et à tous sur le forum,

je prends gout au Vba et j'en decouvre tous les jours (grace à vous entre autre).

je rencontre un petit probleme pour retranscrire la valeur d'un label , ou d'un combobox.

la question est peut etre un peu "bebette" mais je debute .

je voudrai que mon code retranscrive la valeur de mon label dans ma feuille excel de la cellule b10 à la cellule b17 et pas plus bas car en b18 j'ai deja une formule .

j'ai essayé avec :

Private Sub Cmdajoute_Click()
Sheets("cpte").Select
If Labele <> "" Then
Range("cpte!b10").Value = Labele
If Range("B10") = Empty Then
Range("B10").Value = Labele
Else
Range("cpte!b10:b17").End(xlDown).Offset(0, 1).Value = Labele
End If
end sub

cela m'ecrit toujours la valeur de mon label en b10 meme si il ya deja quelque chose dedans et c'est surprenant mais ça ecrit aussi en c18 la valeur de mon label alors qu'il y a une formule. il me l'efface.

je vous remerci par avance si vous pouvez m'aider .


dj.run
 
D

daniel

Guest
Bonjour,

Je ne suis pas sur de comprendre votre probleme.
Mais au terme de ma comprehension, j'attache une solution.

Daniel.
 

Pièces jointes

  • Plage.xls
    27 KB · Affichages: 44
  • Plage.xls
    27 KB · Affichages: 51
  • Plage.xls
    27 KB · Affichages: 49
D

dj.run

Guest
merci daniel,

c'est un debut de solution, mais ce n'est pas excatement ce que je veux faire.

je vais essayer d'etre plus clair .

j'ai un tableau, ou je voudrai remplir certaine cellule (de b10 à b17) avec la valeur d'un label qui lui change grace à une liste deroulante combobox .
je selectionne par exemple dans mon combobox la valeur toto, puis en cliquant sur un bouton que j'ai nommé ajouter, je voudrai que toto s'ecrive dans la cellule b10, si cette cellule est vide sinon que toto s'ecrive en b11.
puis je selectionne tata dans mon combobox et en cliquant sur ajouter, il ecrit tata en b11 si la cellule est vide sinon en b12 si elle est deja utilisée .
la seule chose c'est, qu'il ne faut pas que ça depasse la cellule b17.
la place disponible pour cette action est de b10 à b17 inclus.

esperant etre plus clair, merci encore pour ton aide et je continu à chercher

dj.run
 
D

dj.run

Guest
re daniel,

merci encore pour ton aide mais je n'y arrive pas.
ton exemple, chez moi a un probleme car il plante a l'ouverture sur

Private Sub Workbook_Open()
'Fulfill ComboBox
ComboBox
End Sub

il plante sur combobox.

deplus j'ai annalisé ton code et pour etre honete, je n'y comprend rien.
il faut dire que je suis debutant en vba .

merci quand meme pour ton aide, je vais essayer de trouver des exemples peut etre plus simple .

encore une fois merci pour le temps que tu as passé à chercher une solution pour moi .

@ bientot

dj.run
 
D

daniel

Guest
J'ai trouve pourquoi tu n'arrive pas a lancer l'appli...
Je ne sais pas explique pourquoi, mais qu moment de la sauvegarde (je
pense), excel-vba a ajoute un _ (underscore) a la fin du nom de la procedure.
La version attache ne devrait pas te poser de probleme...
 

Pièces jointes

  • Plage.xls
    40 KB · Affichages: 53
  • Plage.xls
    40 KB · Affichages: 47
  • Plage.xls
    40 KB · Affichages: 56
D

david

Guest
bonjour daniel et les autres sur le forum,

je suis trop nul, en effet maintenant il n'y a plus d'erreur à l'ouverture mais ça marche pas.

ce n'est pas tout a fait vrai, ça marche une fois, je m'explique

je choisi dans le combobox la valeur data 4, elle s'inscrit dans le label puis quand je click sur copy label, cela l'ecrit dans la cellule b10.

mais apres je choisi une autre valeur, ça l'ecrit dans le label et quand je click sur copy label, ça ne l'ecrit pas en b11 mais ça me renvoit le msgbox full area .

en fait c'est presque ce que je veux faire mais apres avoir copié une valeur en b10, si je prend une autre valeur, je voudrai qu'elle se copie en b11 si b10 est deja pris ou en b12 si b11 est deja pris et cela jusqu'en b17 inclus .

je te ferai bien parvenir mon fichier mais zipé il pese 72 ko.

bon je continu mes recherches merci encore pour ton aide .

dj.run
 
D

daniel

Guest
Bonjour,

Je pense qu'il faut que tu investisse un peu de temps (comme nous l'avons tous fait) pour comprendre la programmation vba...
et peut etre mieux definir (savoir specifier) ton besoin.
Le message bos "Full Area" est genere parceque on a atteint la limite que tu as fixe, i.e b17
 
Z

Zon

Guest
Bonjour à Daniel et à David, je me permets de m'introduire dans ce fil en utilisant l'appli de Daniel.


Le goto End_ fait sortir de la macro dés qu'une cellule n'est pas vide. Alors que c'est donc quand on arrive en fin de plage (i=7) qu'il faut sortir donc il suffit de rajouter une condition dans le else, les lignes ajoutées sont en gras

Private Sub Copy_Btn_Click()
'Copy Label in Copy Area
str_A = Sheet1.Label.Caption
For i = 0 To 7
str_Cell = "B" & Trim(Str(i + 10))
If Sheet1.Range(str_Cell).Value = Empty Then
Sheet1.Range(str_Cell).Value = str_A
GoTo End_
Else
If i = 7 Then
a = MsgBox("Full Area")
GoTo End_
End If
End If
Next i
End_:
End Sub


A+++
 
D

dj.run

Guest
bonjour daniel,

je pense que l'on ne se comprend pas bien .

en effet, je sais que la limite de ma plage est b17,
mais le probleme n'est pas la .

avec ton exemple,

je prends une valeur et une seule valeur dans ton combobox par exemple data 2

data 2 est ecrit dans le label

puis quand je click sur copy label, cela l'ecrit dans ta zone verte area copy .
sur la cellule b10 .

jusque là tout va bien.

apres je reprends une valeur dans ton combobox, par exemple data 3, il l'ecrit dans ton label . normalement si je click sur copy label il devrait me le copier en b11 puisque en b10 il y a deja data 2 . et en fait quand je click sur copy label, il me renvoit le message de la fin de plage qui est full area .

alors que les cellules b11 à b17 sont toutes vides . seule la cellule b10 contient data 2 .

et c'est là que je ne comprends plus .

as tu une explication car moi j'y comprends plus rien ??

merci encore pour ton aide .

a propos j'ai reussi a reduire mon fichier, j'ai fait du menage, et il ne pese plus que 47 ko

je vais le joindre ça peut etre plus efficasse un exemple plutot qu'une prose .

merci à toi et aux autres aussi .

dj.run
 

Pièces jointes

  • banquenet.zip
    46.1 KB · Affichages: 19
  • banquenet.zip
    46.1 KB · Affichages: 17
  • banquenet.zip
    46.1 KB · Affichages: 25
Z

Zon

Guest
Bonjour Dj.run

Voilà le code de ton bounton pour les entrées

J'ai rajouté Clng qui permet de mettre en format nombre un textbox
Private Sub Cmdajoute_Click()
Sheets("cpte").Select
For i = 10 To 17
If IsEmpty(Cells(i, 2)) Then
Cells(i, 2).Value = Cbbentree.Value'''''''''''cellule B11,...
Cells(i, 3).Value = CLng(vale.Value)'''''colonne C
GoTo Fin
Else
If i = 17 Then
MsgBox ("Plage pleine")
GoTo Fin
End If
End If
Next i
Fin:
End Sub


A+++
 
D

dj.run

Guest
Bonjour à toutes et à tous,

ZON, que dire ??

C'est superbe !

je n'aurai jamais trouvé tout seul, (si, peut etre dans 4 à 5 ans. mdr!!)

c'est exactement ce que je voulais faire.

tu as meme pris les devants avec :

Cells(i, 3).Value = CLng(vale.Value) '''''colonne C

A ce sujet le fait d'utiliser la fonction CLng, (si j'ai bien compris c'est pour transformer la valeur texte d'un textbox en valeur numerique)
me renvoit des valeurs numeriques mais arrondies par exemple si je saisi 532.15 il me renvoit 532 et si je saisi 532.65, il me renvoit 533.

y a t il une possibilite d'avoir les valeurs exacte ou bien faut il utiliser autre chose qu'un textbox pour saisir les valeurs ?

un GRAND merci encore à toi et aux autres car sans vous je n'avancerai pas bien vite . debutant oblige, mais un jour j'espere pouvoir faire comme vous . aider les autres à avancer dans leurs projets.

merci à tous .

dj.run
 
D

dj.run

Guest
re à toutes et à tous,

je vous fais un petit rajout car entre temps j'ai trouvé la solution de ma derniere question .

en fait a la place de :

Cells(i, 3).Value = CLng(vale.Value) '''''colonne C

j'ai tapé :

Cells(i, 3).Value = vale.Value '''''colonne C

et ça Maaaarche !!

une question me vient à l'esprit :

suis je devenu bon ??? Mdr !!!

non, coup de chance, coup de hazard plutot .

merci à tous et à la prochaine question .
car je pense qu'il y en aura d'autres .

dj.run
 
Z

Zon

Guest
Bpnjour à tous,


Cela fonctionne dans ton cas (Vale.value) car la formule de ta somme de tes montants (total ) est contenu en C18.

Par contre j'ai fait une erreur il faut utiliser Cdbl au lieu Clng, le premier n'est pas un nombre entier donc garde les chiffres aprés les virgules.

Moi j'utilise ce type de fonction car ma somme je la calcule dans mon code de l'usf et non pas sur la feuille de calcul, comme cela l'utilisateur ne peut pas toucher mes formules...


A+++
 

Discussions similaires

Réponses
3
Affichages
715

Statistiques des forums

Discussions
314 647
Messages
2 111 533
Membres
111 192
dernier inscrit
F.Venne