Bonjour,
Je voudrais bien créer un compteur qui se deplace vers l'adroite, c'està dire par ex il se pointe sur le C4 et après sur le D4. Comment le faire?
Merci
Version imprimable
Bonjour,
Je voudrais bien créer un compteur qui se deplace vers l'adroite, c'està dire par ex il se pointe sur le C4 et après sur le D4. Comment le faire?
Merci
je pense qu'il veut parler de la foncion .Offset
Code:
1
2
3 range(selection).offset(nblignes, nbcolonnes).select 'cela va deplacer ta selection selon les paramètres que tu rentrera 'possibilité de mettre une variable (offset(i,0) i = i +1 pour te decaler de lignes en lignes)
Si dans ton code tu utilise une variable comme compteur ex: intVar
tu peux utiliser
ça répond un peu à ta demande ?Code:cells( 4, intVar).select
re
Je vous explique, je travaille sur une boucle do until
et je veux dire do until "compteur de C4 à z4"
compteur=compteur+1(ca va pointer sur le d4)
j'espère que j'étais clair cette fois
Merci encore une fois
Si ton compteur démarre à 0 le numéro de la colonne C est égal à 0+3
Cells (numéro de ligne, numero de colonne)
dans ton casdevrais te donner le résulat que veuxCode:Cells(4, compteur+3).select
re
merci pour vos reponses, ca commence à s'éclaircir dans mon esprit
mais je me demande comment puis je initialiser le compteur à C4?
merci
je pense que ce sera plus parlant avec un exemple
essaye ce bout de code et regarde le résultat
ensuite en modifiant quelques valeurs tu en comprendra le fonctionnementCode:
1
2
3
4
5
6
7
8 Sub testCompteur() Dim compteur As Integer compteur = 0 'initialisation du compteur Do Cells(4, compteur + 3) = "compteur = " & compteur compteur = compteur + 1 Loop While compteur < 24 End Sub
a+
bonjour,
Merci pour ta reponse
en revanche, je me demandais si tu pourrais me corriger ce code car ca s'execute mais ca donne rien comme resultat
code:
[Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Sub test_si() Application.ScreenUpdating = False ' Sheets("CA(PS)").Select Sheets("CA(PS)").Range("AE10") = ActiveCell CPT = 0 Do Until CPT < 48 If ("E10") < ("AE9") Then ActiveCell.Value = 0 Else ActiveCell.Value = 1 End If CPT = CPT + 1 Loop Application.ScreenUpdating = True End Sub
Merci
Rebonjour,
J'ai essayé le code suivant mais ça marche toujours pas
S'il vous plaît aidez moiCode:
1
2
3
4
5
6
7
8
9
10
11
12 Sheets("CA(PS)").Select Sheets("CA(PS)").Range("AE10") = ActiveCell CPT = 0 Do Until CPT = 48 If ("E10") < ("CPT") Then ActiveCell.Value = 0 Else ActiveCell.Value = 1 ActiveCell.Offset(0, 1).Select CPT = CPT + 1 End If Loop
bonjour bird007 zyhack isfet, le forum. je pense que c'est de dire le but de ta macro. la finalite c'est arriver a quel resultat sur ta feuille "CA(PS)" non???
Bonjour tout le monde
Au fait, je vais vous expliquer:Je dois calculer des previsions.
Et maintenant dans cette partie de mon code, je veux affecter des 0 au lieu des prévisions que j'ai déjà calculé dans une autre feuille
Mais pour illustrer je voudrais avoir des 0 quand le contrat est resilié et des 1 quand il n'est pas encore resilié
Voici ma table:
Code analityque
541231
452131
date de resiliation
01/05/20010
01/03/2010
Prévisions par mois (Jan10-fev10,Mar10-avr10....)
Donc je veux pour le premier code qu'en janvier par exemple il m'affecte 1, en fevrier 1, en mars1 en avril 1, et en mai 0
si je ne suis pas clair dîtes le moi
Merci pour vos efforts
Qu'est-ce qui change ?
Qu'est-ce qu'il faut changer ?
Commence par mettre en remarque les "Application.ScreenUpdating", tu verras peut-être quelque chose en intermédiaire !
Dois faire quoi ? Mettre en AE10 la valeur de la cellule sur "CA(PS)" ?
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Sheets("CA(PS)").Select Sheets("CA(PS)").Range("AE10") = ActiveCell CPT = 0 Do Until CPT < 48 'range("E10") < range("AE9") ???? If ("E10") < ("AE9") Then ActiveCell.Value = 0 Else ActiveCell.Value = 1 End If CPT = CPT + 1 Loop
ESVBA
Bnoujour,
Je ne comprend pas ce que tu veux dire, mais essais d'oublier le code que j'ai redigé et tu te base sur mon dernier message.
C'est plus clair je crois
Désolé, je ne comprends pas les relations avec les dates. Je dois comparé quelle colonne de quel ligne avec quelle autre cellule ?
Une capture d'écran ?
ESVBA
bonjour,
chaque
Code analityque
541231
452131
dans mon message c'esun une colonne. donc par example on doit comparer la date de resiliation qui est 01/05/2010 à chaque fois a janvier, fevrier ; mars..., et après on aura un 0 quend on dépasse la date de résiliation.
merci
nb: je suis debutante dans la programmation donc excusez moi
je suis aussi un débutant.
Quelle relation entre 541231 et 452131 avec la date du 01/05/2010 ?
Pour te proposer un code, il faut savoir quoi comparer et surtout où les donnes sont dans la feuille.
Tu as fais une boucle, oui mais à force de comparer la même chose "If ("E10") < ("AE9") Then" ca n'avancera pas ! Fait un test 48 fois !
Les cellules se remplissent en temps réel ? (j'ai pas compris ça)
Plus plausible :Code:
1
2
3
4
5 CPT = 0 'met CPT à 0 Do Until CPT < 48 'Fait jusqu'à ce que CPT soit plus petit que 48, ce qu'il y a dans la boucle jusque LOOP ' mais comme (CPT=0) < 48, c'est déjà terminé !!! CPT=CPT+1 'Augmente CPT de 1 loop
Maintenant, if faut dans la boucle faire plusieurs tests pas comparer 48 fois E10 et AE10 !Code:
1
2
3 Do While CPT <48 'Fait tant que CPT est inférieur à 48 CPT=CPT+1 Loop
Il faut connaitre la colonne "E10" et "AE3" ce que l'on change.
Quel est ton algorihme ?
Première proposition :
Rq : Cellule active qu'il faut changer mais comment ? Où ? Dans quel sens ?Citation:
si E10 est inférieur à AE9 alors je remplis 48 fois la cellule active
Seconde solution (la tienne) :
Rq : rempli 48 fois quoi ? Ca correspondant à poser 48 fois la question ! Et en + avec ce type de structure on fait varier soit "A10" soit "AE1à" soit les deux en fonction des emplacements des dates.Citation:
Si je n'ai pas rempli 48 fois alors si E10 plus petit que AE10 alor je mets "0" sinon "1"
A toi de dire... On ne peut rien faire pour toi.
ESVBA
je pense avoir compris ce que tu désire, afin de faire un essai ouvre un nouveau classeur et dans la première feuille entre les valeurs suivante dans les cellules données
les références
Cellule A2 -> 541231
Cellule A3 -> 452131
les dates de résiliation
Cellule B2 -> 01/05/2010
Cellule B3 -> 01/03/2010
les dates auquelles on liera 1 ou 0
Cellule C1 -> 01/01/2010
Cellule D1 -> 01/02/2010
...jusqu'en
Cellule N1 -> 01/12/2010
ensuite entre le code suivant et lance le
cequi donne quatre sur la ligne avec la date 01/05/2010 et deux 1 pour la date 01/03/2010Code:
1
2
3
4
5
6
7
8
9
10
11
12 Sub resilier() Dim ligne As Integer, colonne As Integer For ligne = 2 To Cells(Rows.Count, 1).End(xlUp).Row For colonne = 3 To 14 If Cells(1, colonne) < Cells(ligne, 2) Then Cells(ligne, colonne) = 1 Else Cells(ligne, colonne) = 0 End If Next colonne Next ligne End Sub
bien sur il faudra adapter à tes besoins mais est-ce que ça ressemble à ce que tu veux ? :D
Bonjour;
Au fait c'est ce que je voulais et ca marche très bien
Merci beaucoup zyhack et toi aussi ESVBA