[Résolu] Ecrire une valeur sur une ligne

DonBeuBeu

XLDnaute Junior
Salut tout l'monde!!!

J'explique la démarche pour commencer

-Je clique sur une cellule
-Je clique sur le bouton de la macro
-La macro écrit alors le chiffre 1 a partir de 2 cases vers la droite de ma cellule active, et sur 95 cases de long

J'arrive presque à le faire mais c'est pas encore sa, je suis sur que sa se fait en 2-3 lignes maxi, voir 1 ^^'

Merci d'avance!
 
Dernière édition:

Orodreth

XLDnaute Impliqué
Re : [VBA] Ecrire une valeur sur une ligne

Bonjour,

Ceci devrait t'aider:
Code:
Dim pcs as long
For pcs = ActiveCell.Column + 2 to ActiveCell.Column + 97 (le +2 de base, majoré du 95)
    ActiveSheet.cells(activecell.row, pcs).value = ......
next pcs

Cordialement,
 

vgendron

XLDnaute Barbatruc
Re : [VBA] Ecrire une valeur sur une ligne

Bonjour,
en fait ca tient en 1 ligne ;-)

ActiveCell.Range(ActiveCell.Offset(0, 2), ActiveCell.Offset(0, 95)) = 1
Pardon: il y a un activecell en trop

Range(ActiveCell.Offset(0, 2), ActiveCell.Offset(0, 97)) = 1
 
Dernière édition:

DonBeuBeu

XLDnaute Junior
Re : [VBA] Ecrire une valeur sur une ligne

J'étais vraiment pas loin du bon code ^^'

Merci à vous 2 le code de vgendron marche parfaitement bien, le tiens aussi Orodreth mais l'autre est plus rapide étonnement :eek:

Merci encore et bonne journée à tous!
 

vgendron

XLDnaute Barbatruc
Re : [VBA] Ecrire une valeur sur une ligne

pour Orodreth
l'instruction offset est simple
tu décales la selection (ici, cellule active) d'un nombre de ligne et d'un nombre de colonnes
ex: cells(1,1).offset(2,5).select
ca sélectionne la cellule située à +2lignes et +5colonnes de A1: donc ici: F3 (si je ne dis pas de betises)
 

vgendron

XLDnaute Barbatruc
Re : [Résolu] Ecrire une valeur sur une ligne

non pas obligé de sélectionner.. l'objet doit etre un range..après. tu en fais ce que tu veux
je ne suis pas allé voir l'aidre VBA, mais je suppose qu'elle décrit assez bien l'offset
 

DonBeuBeu

XLDnaute Junior
Re : [Résolu] Ecrire une valeur sur une ligne

Je reviens vers vous!!! J'aurais aussi aimé que la macro ne marche que si certaines cellules sont sélectionnées,

B12;B15;B17;B19;B21;B23;B25;B27;B29;B31;B33;B35

J'ai essayé sa:

Sub saisie_journée_complète()

' Petite macro qui permet de saisir des journées complètes automatiquement

If ActiveCell.Index = ("B12;B15;B17;B19;B21;B23;B25;B27;B29;B31;B33;B35") Then
Range(ActiveCell.Offset(0, 2), ActiveCell.Offset(0, 97)) = 1
Run ("envoi_au_tableauxbdd")

Else: MsgBox ("Vous ne cliquez pas sur une cellule valide")

End If

End Sub

Merci d'avance
 

DonBeuBeu

XLDnaute Junior
Re : [VBA] Ecrire une valeur sur une ligne

Désolé de faire remonter le sujet mais j'ai beau essayé plusieurs technique je n'y arrive pas... Encore une fois je suis sur que sa tiens en 2-3 lignes mais je dois pas avoir la bonne syntaxe =\

En faites je ne veux pas que la macro puisse se déclencher à tout moment mais uniquement si la cellule sélectionné se trouve dans cette liste:
B12;B15;B17;B19;B21;B23;B25;B27;B29;B31;B33;B35

Merci d'avance ;)
 

Orodreth

XLDnaute Impliqué
Re : [VBA] Ecrire une valeur sur une ligne

Re,

Non, pas 2/3 lignes là, c'est une suite de validation. Enfin ... Dans l'état actuel de mes connaissances. (Bref, si quelqu'un a mieux ...)

Une idée:
Code:
Dim b_Cellule_Valid as Boolean
b_Cellule_Valid = false

Dim ListeValide as string
ListeValide = "B12;B15;B17;B19;B21;B23;B25;B27;B29;B31;B33;B35"

Dim lesCellules() as string
lesCellules = split(ListeValide, ";")

Dim pcs_Valid as integer
for pcs_Valid = 0 to uBound(lesCellules)
    Dim adresseCell as string
    adresseCell = Replace(ActiveCell.address, "$", "")

    if adresseCell = lesCellules(pcs_Valid) then
        b_Cellule_Valid = True
        Exit For
    end if
next pcs_Valid

If b_Cellule_Valid Then
....TON CODE ICI ....
End if

C'est un peu plus complexe, mais ça me parait le plus simple à mettre en place

Cordialement,
 

Orodreth

XLDnaute Impliqué
Re : [VBA] Ecrire une valeur sur une ligne

Re,

Sinon (après réflexion de ma part ... je suis con des fois), plus simple, en beaucoup moins de ligne:

Code:
Dim ListeValide as string
ListeValide = "B12;B15;B17;B19;B21;B23;B25;B27;B29;B31;B33;B35"
Dim adresseCell as string
adresseCell = Replace(ActiveCell.address, "$", "")

If InStr(1, ListeValide, adresseCell) > 0 Then
    ...TON CODE ICI ...
End If

Pas besoin de passer par un tableau en fait.

Cordialement,
 

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 965
Membres
103 069
dernier inscrit
jujulop