IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Completer les Cellules vides par des "O" selon conditions par macro [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2014
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2014
    Messages : 316
    Par défaut Completer les Cellules vides par des "O" selon conditions par macro
    Bonjour à tous les lecteurs : N'étant pas très expérimenté en matière de macros je viens vous demander de l'aide.

    Explication du sujet.
    Les Lignes 3 12 et 21 en jaune correspondent aux prémons des joueurs F3 correspond à Moi-Même les prénoms sont identiques à la vertical
    Dans 3 grilles différentes lorsque le quota de croix est atteint les croix passent en rouge selon l'exemple de la colonne F
    L'objectif demandé est en Ligne 2 et variable selon l'exemple ci-joint C2 = 5 donc en D2= 5 et en E2 et F2= 4 et inverssement si en C2 = 4 en D2 on Obtient la valeur 4 et en E et F on obtient la valeur 5

    En Ligne 31 j'ait le dénombrement des X (croix) rentrées dans le tableau. En général on commence toujours par la colonne F pour remplir les cartes que je possede = X.

    Le but de ma demande.

    Lorsque l'objectif de 4 X est atteind, Il faut completer les cellules vides à la vertical par des lettres "O" Il faut également completer par des "O" en ligne Horizontal. exemple en vert sur l'image.

    La ou cela se complique , lorsqu'un adverssaire me fait voir un carte je la marque d'une X croix. Il ne peut y avoir qu'une seule croix par ligne ou alors j'ai fait une erreur.(j'ai mis des MFC pour contrôle) qui dit croix donc on complete en ligne par des "O" les cellules vides
    Si l'adverssaire n'a rien à me faire voir je marque un "O" donc on laisse les cellules vides car un autre adverssaire peut avoir la carte demandée.


    Par avance merci pour votre aide
    Images attachées Images attachées  

  2. #2
    Membre chevronné
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 214
    Par défaut
    Tu peux nous montrer ce que tu as déjà pu faire en VBA ? Nous t'aiderons à finir

  3. #3
    Membre éprouvé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 91
    Par défaut
    Voici un code qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    Dim bEnCours As Boolean
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim nbTab As Integer
    Dim nbRowDeb As Long
    Dim nbRowFin As Long
     
    If bEnCours Then Exit Sub
    If Target.Row >= 4 And Target.Row <= 9 And Target.Column >= 3 And Target.Column <= 6 Then
        nbTab = 1
        nbRowDeb = 4
        nbRowFin = 9
    ElseIf Target.Row >= 13 And Target.Row <= 18 And Target.Column >= 3 And Target.Column <= 6 Then
        nbTab = 1
        nbRowDeb = 13
        nbRowFin = 18
    ElseIf Target.Row >= 22 And Target.Row <= 30 And Target.Column >= 3 And Target.Column <= 6 Then
        nbTab = 1
        nbRowDeb = 22
        nbRowFin = 30
    Else
        Exit Sub
    End If
     
    bEnCours = True
     
    If Cells(31, Target.Column).Value = Cells(2, Target.Column).Value Then
        Call CompleteLigne(0, 4, 9, Target.Row, Target.Column)
        Call CompleteColonne(0, 4, 9, Target.Row, Target.Column)
        Call CompleteColonne(0, 13, 18, Target.Row, Target.Column)
        Call CompleteColonne(0, 22, 30, Target.Row, Target.Column)
    ElseIf Cells(Target.Row, Target.Column).Value = "X" Then
        Call CompleteLigne(nbTab, nbRowDeb, nbRowFin, Target.Row, Target.Column)
    End If
     
    bEnCours = False
     
    End Sub
     
    Sub CompleteLigne(iTab As Integer, iDeb As Long, iFin As Long, iRow As Long, iColumn As Long)
    Dim i As Long
     
    ' Complète la ligne
    For i = 3 To 6
        If Cells(iRow, i).Value = "" Then
            Cells(iRow, i).Value = "O"
        End If
    Next i
     
    End Sub
     
     
    Sub CompleteColonne(iTab As Integer, iDeb As Long, iFin As Long, iRow As Long, iColumn As Long)
    Dim i As Long
     
    ' Complète la colonne
    For i = iDeb To iFin
        If Cells(i, iColumn).Value = "" Then
            Cells(i, iColumn).Value = "O"
        End If
    Next i
     
    End Sub

  4. #4
    Membre expérimenté
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2014
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2014
    Messages : 316
    Par défaut
    Bonjour : Un très grand merci pour votre participation et votre savoir faire pro dans ce domaine. Je me débrouille pour coder quelles petites macros mais cela ne vas pas plus loin.
    De plus vous avez bien compris ma demande.

    Que doit je modifier comme valeurs pour adapter le code : pour un jeu à 3 sachant qu'il il a une colonne de moins ?
    pour un jeu à 5 sachant qu'il il a 1 colonne de plus que le jeu à 4 ?
    pour un jeu à 6 sachant qu'il il a 2 colonnes de plus que le jeu à 4 ?

    Par avance merci.

  5. #5
    Membre éprouvé
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2017
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 91
    Par défaut
    Le plus simple
    Dans ton onglet, définis une cellule pour indiquer le nombre de joueurs (mettons en A1).
    Dans ton code, lis cette valeur pour définir le nombre maximum de colonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Change(ByVal Target As Range)
    dim nbColonne as integer
    
    nbcolonne = range("A1").value+2
    If Target.Row >= 4 And Target.Row <= 9 And Target.Column >= 3 And Target.Column <= nbColonne Then ' dans les 3 if
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub CompleteLigne(iTab As Integer, iDeb As Long, iFin As Long, iRow As Long, iColumn As Long)
    dim nbColonne as integer
    nbcolonne = range("A1").value+2
     
    For i = 3 To nbColonne

  6. #6
    Membre expérimenté
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2014
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2014
    Messages : 316
    Par défaut
    Re : Merci pour votre réponse: Mais déjà créé mes différentes feuilles car les paramètres pour chaque feuilles sont quelque peu différents

    J'ai résolu le problème en modifiant les valeurs dans le code que j'ai adapté pour chaque feuille.



    Encore merci pour votre aide. Vous m'avez été d'une aide précieuse.


    A bientôt sur ce forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplacer les cellules vides par des NA
    Par ali3529 dans le forum R
    Réponses: 6
    Dernier message: 30/05/2018, 13h26
  2. Réponses: 13
    Dernier message: 20/06/2015, 13h02
  3. Réponses: 10
    Dernier message: 16/12/2011, 18h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo