Cocher les cellules d'un tableau de facon automatisé

Bonjour, j'ai besoin d'aide

Je tente de réaliser un tableau permettant de faire le suivi de phases de tests. Je voudrais essayer d'automatiser une fonction pour cocher (X) les phases de tests a effectuer, pour cela j ai pensé a des listes deroulantes mais pour le moments c'est pas top.

Voir Excel en piece jointe : (Les Explications sont en dessous)

[b]

Tableau 1[/b]

Le 1er tableau est le resultat attendu ( disons que comme quand on essaye de demontrer une equation, on peut un peu tricher en partant du resultat pour savoir comment comencer, j'ai essayé de faire pareil pour comprendre comment réaliser le 2eme tableau)

Tableau 2

Ensuite la 1er etape du 2eme tableau est de partir des lignes et colonnes (a,s,d,f,g,h,j,k) et (q,w,e,r,t,y,u,i,o) de faire exactement la meme chose que le tableau 1 (cocher)

Sauf que cette fois si je ne sais pas ou je dois mettre mes "X". Mes phases de tests ne sont pas definies.

Je dois donc en premiers temps definir où les mettres. D'ou cette histoire de liste deroulante (Pour selectionner ma ligne et colonne= equipement et test pour enfin arriver a la partie cocher la phase de test en mettant un X).

Et ensuite 3 eme etape, a partir de ce choix de ligne et colonne cocher la phase de test a effectuer dans le tableau

la partie "done" "not yet" est la derniere partie elle me permet de dire si mes X ont été traitée ou pas (un code couleur vert/rouge)

En resumer :

-Je ne sais pas liéer ma liste deroulante avec mon tableau pour cocher et mettre un X

11exemple.xlsx (15.52 Ko)

Bonjour Quentin,

Je te retourne ton fichier Excel modifié :

8exemple.xlsm (21.38 Ko)

Note bien que ton 2ème tableau est vide ; Ctrl e ➯ travail effectué

Alt F11 pour voir le code VBA, puis revenir sur Excel

Si besoin, tu peux demander une adaptation.

Merci de me dire si ça te convient.

dhany

Bonjour Dhany,

D'abord merci pour ton aide,

Je suis un peu novice avec VBA, y a t-il une démarche particulière à suivre pour l'activer:

L'objectif étant de cocher certaines cases du tableau 2 juste en changeant les listes déroulantes, je sais pas si mon premier poste était "francais" ?

Mon soucis est que je ne sais pas quel test (colonne) est lié avec quelle ligne (equipement) d'ou ma petite tentative de probabilite dans le tableau 1. Que dois je faire pour "remplir le tableau2" ?

Si, si, ton post était français ; mais j'avais pensé qu'on pouvait faire le job sans passer par les listes déroulantes : ça lit toute ta colonne D à partir de la ligne 5 et ça remplit ton 2ème tableau : les coches x sont mises au bon endroit chaque fois qu'un "done" est rencontré.

Note : comme la plage des résultats est effacée au début, ça évite tout risque de mélange avec d'anciens résultats.


Le fichier d'origine .xlsx doit bien sûr être converti en .xlsm pour pouvoir contenir du code VBA ; tu dois copier / coller le code dans Module1 ; facultatif : ajouter le raccourci clavier Ctrl e ; sinon, passer par Alt F8 pour lancer la macro.

Il va de soi que les macros doivent être activées.

dhany

Bonjour,

Je n'ai pas très bien compris la question, disons ce que tu attendais comme type de réponse ! Mais l'idée d'indiquer ligne et colonne au moyen de listes déroulantes ne me paraît pas très opératoire.

Un traitement macro sera plus aisément adaptable à d'autres configurations.

Sub Cocher()
    Dim aa, ii, kk, tt, i%, j%, k%
    With ActiveSheet
        ii = .Range("I24:I32").Value
        kk = .Range("J23:R23").Value
        .Range("J24:R32").ClearContents
        tt = .Range("J24:R32").Value
        aa = .Range("B5:D85").Value
        For i = 1 To UBound(aa)
            If aa(i, 3) = "done" Then
                j = WorksheetFunction.Match(aa(i, 2), ii, 0)
                k = WorksheetFunction.Match(aa(i, 1), kk, 0)
                tt(j, k) = "X"
            End If
        Next i
        .Range("J24:R32").Value = tt
    End With
End Sub

Comme tu peux constater, on y met les plages utiles en tableaux, l'adaptation réside donc à remplacer les adresses actuelles par d'autres...

Pour tester, cliquer sur le bouton Cocher...

Cordialement.

NB- Pas vu solution Dhany, ne sais donc pas si utilise même type de méthode... A toi de voir le cas échéant.

Encore une fois merci ahah

Merci pour l'explication du fonction de VBA (avec l'histoire des changement de format)

J'espere que j'en demande pas trop mais il me reste une question et je suis toujours pas sur d avoir bien formuler mon premier post. Du coup je prefere me repeter au cas ou

Avez vous une idées pour éviter cette partir de mon Excel initial à gauche de facon probabiliste (q lié soit à a,s,d,f,g,h,j,k ou l puis w lié à a,s,d,f,g,h,j,k,ou l). A la base avec cette histoire de liste déroulante, je pensais éviter cette partie probabiliste car je dois effectuer cette demarche sur plus de 402 lignes soit 3618 fois .

Au debut j'aurai donc penser demander de choisir :

Partie 1

  • une ligne
  • une colonne

Puis en Partie 2:

Dire si on la considérait comme une phase de test (Done / Not yet) à faire, donc rentrer done ou not yet. C'est ici que je pensé mettre mal expliqué. Done / Not yet serait plus un "a faire / ne pas faire"

Et enfin cocher (X) la case qui représente la phase de test à effectuer.

C'est la liaison entre la partie 1 et 2 qui me pose soucis ainsi que la partie 2 en elle meme

En gros je dois dire quels tests doit etre effectué pour tel ou tel equipement et les X en sont le resultats.

en toute facón je mettrait un Done ou Not Yet par une simple regle de couleur

Merci Pour votre aide encore

Re,

J'avoue que tu développes ce que je n'avais pas compris dans ton premier post, et... je n'ai pas mieux compris l'introduction d'un élément probabiliste !

Si ton problème n'est pas le remplissage du tableau, il faudrait arriver à nous faire comprendre en quoi il consiste... !

Cordialement.

Bonjour à tous,

un peu tard mais ta question initiale par formule. En I5 :

=SI(DECALER($D$5;(COLONNE()-9)*9+(LIGNE()-5);)="done";"X";"")

à tirer vers la droite et vers le bas.

eric

Merci a tous pour vos reponses pour commencer !

Je re post ma question initale (reformulant mon problème complet)

Avez vous une idées pour éviter cette partir de mon Excel initial à gauche de facon probabiliste (q lié soit à a,s,d,f,g,h,j,k ou l puis w lié à a,s,d,f,g,h,j,k,ou l). A la base avec cette histoire de liste déroulante, je pensais contourner cette partie probabiliste en compressant la liste (q,w,e,r,t,y,u,i,o et a,s,d,f,g,h,j,k,l) par 2 listes deroulantes ou du moins 2 cases ou je choisis directement ou je me place

Au debut j'aurai donc penser demander de choisir :

Partie 1

  • une ligne
  • une colonne

Puis en Partie 2:

Dire si on la considérait comme une phase de test (Done / Not yet) à faire, donc rentrer done ou not yet. C'est ici que je pensé mettre mal expliqué. Done / Not yet serait plus un "a faire / ne pas faire"

Et enfin cocher (X) la case qui représente la phase de test à effectuer.

C'est la liaison entre la partie 1 et 2 qui me pose soucis ainsi que la partie 2 en elle meme

En gros je dois dire quels tests doit etre effectué pour tel ou tel equipement et les X en sont le resultats.

en toute fin je mettrait un simple Done ou Not Yet avec une regle de couleur (vert si X ou Rouge si pas X)

Si ton tableau du haut, garni de "X" dans ton modèle, n'est pas le résultat attendu, illustre-nous le résultat attendu !

Le 1er tableau est le resultat attendu en effet

Il m'a permis de valider l'etape cocher des cases dans les cellules

Ensuite la deuxieme etape est de a partir des lignes et colonnes (a,s,d,f,g,h,j,k) et (q,w,e,r,t,y,u,i,o) de faire exactement la meme chose que le tableau 1 sauf que cette fois si je ne sais pas ou je dois mettre mes "X". Je dois donc en premiers temps definir ou les mettres. D'ou cette histoire de liste deroulante (Pour selectionner ma ligne et colonne).

Et ensuite 3 eme etape a partir de ce choix de ligne et colonne cocher la phase a effectuer dans le tableau

la partie "done" "not yet" est la derniere partie elle me permet de dire si mes X ont été traitée ou pas (un code couleur vert/rouge)

j'espere etre plus claire

@Quentin

Nouveau fichier Excel .xslm :

6exemple.xlsm (21.08 Ko)

Sélectionne dans les 2 listes chaque coordonnée ➯ si les 2 coordonnées sont valables (cellules non vides) :

à l'intersection : ça met une coche "x" si elle n'y est pas déjà ; et si elle y est déjà, ça l'enlève.

Si tu as besoin de modifier l'état (coché ou non) de la même case, le plus simple, au lieu de sélectionner de nouveau les coordonnées, est d'appuyer sur les touches F2 puis Entrée, cela quand tu es sur une des 2 coordonnées, donc en V23 ou en V25.

À te lire pour avoir ton avis.

dhany

Lorsque tu dis "pour pouvoir contenir du code VBA ; tu dois copier / coller le code dans Module1 "

Peux tu me dire a quoi ça correspond je suis en espagne et le changement ne langue n'est pas accesible

@Quentin

J'ai dû m'absenter, et je viens de lire ton message ; regarde d'abord cette image :

screen 1

1) Ouvre dans Excel ton fichier .xlsx actuel, puis appuie sur la touche F12 ➯ fenêtre "Enregistrer sous" ; en espagnol : "registrar como".

2) Juste sous l'endroit où tu mets le nom de fichier, il y a : "Type" pour le type de fichier : "Tipo" (de archivo) ; dans la liste déroulante, tu dois choisir l'item "Classeur Excel (prenant en charge les macros)" ; en espagnol : "Libro de Excel (macros de soporte)".


Avec ce que tu as fais ci-dessus, tu as ton fichier .xlsm ; le .xlsx d'origine est toujours présent sur ton disque dur, et tu pourras le supprimer après avoir vérifié que la conversion s'est bien passée : le .xlsm s'ouvre correctement, et tout y est.


Quand tu as à l'écran ton fichier .xlsm appuie sur les touches Alt F11 pour aller sur la fenêtre de « Microsoft Visual Basic » ; pour ça, pas besoin de traduire : c'est universel ! là, j'viens d'voir que j'ai tapé trop vite ma description précédente : le code VBA ne doit pas être mis dans Module1 mais dans le module spécial de la feuille qui contient tes 2 listes déroulantes ➯ en haut à gauche, fais un double-clic sur "Feuil1 (Hoja 3)" (ou un seul clic puis Entrée) ➯ tu auras à droite une page blanche ; c'est là qu'il faut copier / coller mon code VBA ; tu dois aboutir à ceci (attention : j'ai fait une petite correction : j'ai remonté le End With du 1er With) :

screen 2

Pour te faciliter la tâche, fais le copier du code VBA à partir de celui-ci :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  With Target
    If .Count > 1 Then Exit Sub
    If .Address <> "$V$23" And .Address <> "$V$25" Then Exit Sub
  End With
  If IsEmpty([V23]) Or IsEmpty([V25]) Then Exit Sub
  Dim lig&, p As Byte: p = InStr("asdfghjkl", [V23])
  If p = 0 Then Exit Sub
  lig = 23 + p: p = InStr("qwertyuio", [V25])
  If p = 0 Then Exit Sub
  With Cells(lig, 9 + p)
    If IsEmpty(.Value) Then .Value = "x" Else .Value = ""
  End With
End Sub

Après le coller, fais de nouveau Alt F11 pour retourner sur Excel


Il te reste à faire des tests en utilisant tes 2 listes déroulantes ; rappel du mode d'emploi :

Sélectionne dans les 2 listes chaque coordonnée ➯ si les 2 coordonnées sont valables (cellules non vides) :

à l'intersection : ça met une coche "x" si elle n'y est pas déjà ; et si elle y est déjà, ça l'enlève.

Si tu as besoin de modifier l'état (coché ou non) de la même case, le plus simple, au lieu de sélectionner de nouveau les coordonnées, est d'appuyer sur les touches F2 puis Entrée, cela quand tu es sur une des 2 coordonnées, donc en V23 ou en V25.


Au cas où, je joins ici mon fichier précédent corrigé (avec le End With du 1er With remonté) :

8exemple.xlsm (21.11 Ko)

Si tu as besoin de plus d'infos, n'hésite pas à le demander.

Merci de me dire si tu as réussi.

dhany

Merci pour le tuto super détaillé ! CA MARCHE !

Rechercher des sujets similaires à "cocher tableau facon automatise"