inscription dans cellule à l'aide d'un code vba et condition celulle...

dame et roi

XLDnaute Occasionnel
Bonsoir à tous:),

J'ai un petit soucis que je ne sais pas résoudre. Pour être le plus clair possible pour mon problème, je joint le fichier ci dessous.

Pouvez vous m'écrire les codes svp. Je possède excel 2000.

Merci par avance, et à bientôt,

amicalement,
 

Pièces jointes

  • code.xls
    23.5 KB · Affichages: 75
  • code.xls
    23.5 KB · Affichages: 78
  • code.xls
    23.5 KB · Affichages: 80

Excel-lent

XLDnaute Barbatruc
Re : inscription dans cellule à l'aide d'un code vba et condition celulle...

Bonsoir Dame et Roi,

Ton fichier est juste????

1/ Lorsque ... il faut mettre "o" dans la colonne G.
Toutes tes cellules ne sont pas vide, donc si je lis bien ton explication en B24:B25, je devrais donc voir dans la colonne G que des "o". Pourtant, le résultat que tu souhaites obtenir est autre!!!

2/ Ta condition B27:B28 est exactement la même que celle juste au dessus, pourtant il ne faut pas mettre "o" mais "N"!!!!!!

C'est pas très logique!!!!!

3/ Tu veux la même chose dans la colonne J? Toujours par rapport à la colonne A???? Alors pourquoi ne pas écrire par exemple en J6, la formule "=G6"???

4/ De plus, pourquoi vouloir passer par le VBA alors qu'une fonction toute simple pourrez très bien faire l'affaire?

A te lire

Cordialement
 

dame et roi

XLDnaute Occasionnel
Re : inscription dans cellule à l'aide d'un code vba et condition celulle...

Bonsoir Excel lent et à tous:),

Oui mon fichier est correct. Je l'avais simplifier au maximum pour les explications.
La colonne a comprend une très longues listes de personnes (2000 ou plus par exemple)
Les colonnes G , J correspondent à des mois. Ils y en auras 2 fois 12 mois .
Ils doivent être indépendant des uns des autres mais ils doivent tous dépendre absoluemment de la colonne A non vide à partir de A6!
Il peut donc y avoir un "o" en g6 et un "n" en j6 ! etc...

Je souhaite que lorsqu'on clic sur les commandbuttonxx, on a le choix soit de TOUT mettre à "o" qui veut dire oui ou TOUT à "n" pour non ET CECI d'un seul coup pour toutes les cellules de la colonnes G (et ssi a6:a2000 <>"") et ceci AFIN D'EVITER DE LE FAIRE MANUELLEMENT SUR 2000 LIGNES OU PLUS...
Ensuite, je n'aurai juste qu'à selectionner les quelques personnes pour mettre "o" ou "n" manuellement.
Par exemple, en a6 la cellulle est non vide. Si je clic sur mettre "o" de la colonne G, je devrai avoir "o" pour g6, g7, g8, g9,g10,g11, g12 et c'est tout, car les autres cellules de la colonnes a sont vides! (a13 et +).
Si je clic sur mettre "n" de la colonne J, je devrai avoir "n" pour j6, j7, j8, j9,j10,j11, j12 et c'est tout, car les autres cellules de la colonnes a sont vides! (a13 et +).

Bien sur, je garde le format conditionnel (couleur vert et rouge).

Voilà, j'espère avoir été plus clair.

A bientôt, pour y exceller!

amicalement,
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : inscription dans cellule à l'aide d'un code vba et condition celulle...

Bonsoir à tous
Je nomme
o_1 le bouton Mettre "o" pour la septième colonne.
n_1 le bouton Mettre "n" pour la septième colonne.
o_2 le bouton Mettre "o" pour la dixième colonne.
n_2 le bouton Mettre "n" pour la dixième colonne.​
Code à placer dans le module de code de la feuille "Feuil1" (celle qui porte les boutons) :
Code:
[COLOR="DarkSlateGray"]Private Sub o_1_Click()
   tout_n_ou_o 7, "o"
End Sub

Private Sub o_2_Click()
   tout_n_ou_o 10, "o"
End Sub

Private Sub n_1_Click()
   tout_n_ou_o 7, "n"
End Sub

Private Sub n_2_Click()
   tout_n_ou_o 10, "n"
End Sub[/COLOR]
Code à placer dans un module standard quelconque :
Code:
[COLOR="DarkSlateGray"]Sub tout_n_ou_o(col As Integer, lettre As String)
   With ActiveSheet.Cells(6, 1)
      Range(.Cells, .End(xlDown)).Offset(0, col - 1).Value = lettre
   End With
End Sub[/COLOR]
A essayer... (Chez moi, ça fonctionne)​
ROGER2327
 

Lii

XLDnaute Impliqué
Re : inscription dans cellule à l'aide d'un code vba et condition celulle...

Bonjour,

un autre exemple avec 2 boutons et la possibilité d'une remise à zéro.

précision : les 2 colonnes G et J sont indépendantes. On aurait cela avec la proposition de Roger ;) en groupant les boutons me semble-t-il.
 

Pièces jointes

  • BasculeOuiNon.zip
    9 KB · Affichages: 25
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : inscription dans cellule à l'aide d'un code vba et condition celulle...

Re...
Bien vu ! Réduire le nombre des boutons allège le classeur.
Une remarque à l'attention de dame et roi : n'oubliez pas de modifier toutes les occurrences de
Code:
[COLOR="DarkSlateGray"][A[COLOR="Red"]500[/COLOR]].End(xlUp).Row[/COLOR]
si vous avez plus de 494 lignes à traiter avec le code de Lii. Sinon, seules les lignes 5 et 6 seront traitées.​
Bonne journée.
ROGER2327
#1812
_
_

Note : Mon code aussi traite indépendamment les colonnes G et J.
 
Dernière édition:

dame et roi

XLDnaute Occasionnel
Re : inscription dans cellule à l'aide d'un code vba et condition celulle...

Bonjour Roger2327 et Lii:),

Merci pour vos réponses. C'est génial. J'ai tardé un peu à vous répondre, car une idée mais venu et j'ai tenté de travaillé sur le fichier avant de me connecter sur le forum.
Pour éviter de surchargé le fichier de boutons (48 boutons au total car 2 boutons par colonnes sur 24 colonnes), j'ai pensé à créer une userform dans lequel on incluerai une combolist et dans laquelle on choisierai la colonne à tout mettre à o ou à n.

Cela est surement faisable. N'est-ce pas?

En tout cas je vous remercie encore pour vos travaux génial!!

a bientôt, amicalement,
 

ROGER2327

XLDnaute Barbatruc
Re : inscription dans cellule à l'aide d'un code vba et condition celulle...

Suite...
Une autre proposition à base de boîtes d'entrée.
Pour ce faire, j'ai ajouté ce code à celui proposés hier dans le module Module1 :
Code:
[COLOR="DarkSlateGray"]Sub choix()
Dim colT As String, lettre As String, ctrlCol, oDat, i As Long, j As Long
   ctrlCol = Array("G", 10) [COLOR="SeaGreen"]' Liste des colonnes autorisées.[/COLOR]
   For i = 0 To UBound(ctrlCol)
      If Not IsNumeric(ctrlCol(i)) Then ctrlCol(i) = colNum(CStr(ctrlCol(i)))
   Next i
   lettre = InputBox("Ecrivez le texte à insérer.", "Le texte...")
   colT = InputBox("Choisissez la ou les colonnes à traiter" & vbLf & "(Liste séparée par des virgules)", "Les colonnes...", "Toutes")
   If colT = "" Then Exit Sub Else oDat = Split(colT, ",")
   If oDat(0) = "Toutes" Then oDat = ctrlCol
   For i = 0 To UBound(oDat)
      colT = Trim(oDat(i))
      If Not IsNumeric(colT) Then colT = colNum(colT)
      For j = 0 To UBound(ctrlCol)
         If CLng(colT) = ctrlCol(j) Then tout_n_ou_o CLng(colT), lettre: Exit For
      Next j
   Next i
End Sub

Function colNum(col As String) As Long
Dim i As Long
   For i = 1 To Len(col)
      colNum = colNum * 26 + Asc(UCase(Mid$(col, i, 1))) - 64
   Next i
End Function[/COLOR]
Pour l'exécuter, cliquez sur le bouton Initialise... (qui n'est d'ailleurs pas un bouton mais un simple champ de texte).
A la demande Le texte..., répondre par o ou n ou tout autre texte que l'on voudra. Si on laisse vide le champ de saisie, on videra les colonnes.
A la demande Les colonnes..., donner la liste des colonnes qu'on veut traiter sous forme d'une liste de valeurs séparées par une virgule.
Une colonne peut être désignée par son rang ou par son nom : les entrées
G,J
7,J
G,10
7,10
10,7
etc. sont équivalentes.
Si on laisse la valeur par défaut (Toutes) toutes les colonnes autorisées seront traitées en une passe.
Si on laisse vide le champ de saisie, la procédure est abandonnée.
Si on entre un nom ou un rang de colonne non autorisé, il sera ignoré.
La liste des colonnes autorisées est dans le code :
Code:
[COLOR="DarkSlateGray"]   ctrlCol = Array("G", 10)[/COLOR]
Elle peut être complétée par des noms ou des rangs de colonnes.
L'exécution est assez rapide, même avec quelques milliers de lignes.
Merci de me signaler les quelques bogues qui doivent encore subsister. (On ne saurait penser à tout...)
RGER2327
#1814
 

Pièces jointes

  • Copie de code.zip
    13.7 KB · Affichages: 19
Dernière édition:

dame et roi

XLDnaute Occasionnel
Re : inscription dans cellule à l'aide d'un code vba et condition celulle...

Bonsoir Roger2327 et Lii et à tous:),

Merci pour votre excellent travail de pro! génial. J'ai juste apporté une correction du fichier de Lii qui ne fonctionne pas pour la colonne 12 car j'ai du ajouter les formats conditionnels couleurs rouge, verts et rien pour la colonne 12. Sinon, tout fonctionne bien. Je joint le fichier corrigé.

Sinon, j'aimerai savoir s'il était possible d'affecter un "nom de colonne" à la place de mettre un numéro de colonne dans la combolist de la userform. Voir la feuille "mois".
Dans la colonne a , on a la liste des mois qu'il faudrait afficher dans la comboliste de la userform. Dans la colonne B de la même feuille ("mois"), on a les numéro des colonnes qu'ils faudrait prendre pour la feuille "feuil1".
En effet, il est plus facile de dire "mettre à o" pour tel mois pour éviter de compter les colonnes.
Je m'excuse encore de vous demander une modification. J'ai appris de nombreux codes grâce à vous et à d'autres personnes.

Merci par avance.
A bientôt pour y exceller,
amicalement,
 

Pièces jointes

  • corrigeBasculeOuiNonColonne.xls
    43.5 KB · Affichages: 42

Lii

XLDnaute Impliqué
Re : inscription dans cellule à l'aide d'un code vba et condition celulle...

re,

tout d'abord à Roger : merci pour cet excellent travail.
J'ai failli écrire "Good Job" mais, pour faire plaisir à certains (dont moi), je soigne ma rédaction et surtout je n'oublie pas la personne citée en 75 dans mes remerciements, pour la qualité de ses interventions sur ce forum.

Qui peut le plus peut le moins ! Moi qui reste au ras des pâquerettes, j'en redemande !

Dans le fichier joint la MFC est inutile comme dans le précédent (couleurs permutées).
 

Pièces jointes

  • USF ColonneOuiNon.zip
    10.6 KB · Affichages: 21

Discussions similaires