Effectuer une boucle dans une boucle

Bonjour,

Et oui, encore un nouveau à la recherche de savoir!

Donc en fait, mon code fonctionne. Ce que je veux, c'est lorsqu'il y a un "X" ou un "x" dans la colonne K (sécurité) du domaine d'impact, la colonne U et AK apparaissent. Si toutes les cellules de la colonne K sont vides, bien les colonnes disparaissent. Donc après, s'il y a un X ou x dans la colonne L (juridique), les colonnes V et AL apparaissent et ainsi de suite jusqu'à la colonne S du tableau.

Il est certain qu'il faut faire ceci avec une boucle pour alléger le code, car oui, le code est ridiculement long lorsque l'on ne connaît pas les boucles, ce qui est mon cas. C'est pourquoi je fait appel à des pro pour m'aider à réaliser cette opération avec une boucle. Vous pouvez voir le document ci-joint.

Merci à l'avance!

Bonsoir,

Une boucle dans une boucle pour tester toutes les lignes pour savoir s'il y a un X ou un X ?
En fait, dès qu'il y a un X alors les colonnes s'affichent, sinon elles sont masquées, donc juste une vérification du nombre de X dans la colonne, si =0 on masque, sinon on affiche. Dans ce cas il n'y aura qu'une boucle afin de tester une par une les colonnes "référence" pour savoir s'il faut masquer ou pas, après pour le test un CountIf sur la colonne pourrait faire l'affaire.

@ bientôt

LouReeD

bonjour,

edit :salut Loureed

une proposition de simplification de ton code worksheet_change

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim c As Range, i As Long, r As Range
    Dim tabcol(1 To 9)
    Dim risquein As Range: Set risquein = Feuil1.Range("U9:AC9")
    Dim risquere As Range: Set risquere = Feuil1.Range("AK9:AS9")

    For i = 1 To 9 'col K à S
        Set tabcol(i) = Feuil1.Cells(4, 10 + i).Resize(1050, 1) 'ligne 4 à 1053
    Next i

    Application.ScreenUpdating = False

    'Faire apparaître et disparaître les colonnes d'impacts du risque

    risquein.EntireColumn.Hidden = True
    risquere.EntireColumn.Hidden = True

    For i = 1 To 9
        For Each c In tabcol(i).Cells
            'MsgBox c.Address
            If c.Value = "X" Or c.Value = "x" Then
                Feuil1.Range("U1").Offset(0, i - 1).EntireColumn.Hidden = False
                Feuil1.Range("AK1").Offset(0, i - 1).EntireColumn.Hidden = False
                Exit For
            End If
        Next c
    Next i

    Application.ScreenUpdating = True

End Sub

Bon ben je retourne dans ma chambre avec mon "CountIf" !

Bonjour acide !

@ bientôt

LouReeD

@Loureed,

Bon ben je retourne dans ma chambre avec mon "CountIf" !

Bonjour acide !

ben pourquoi, cela me semble une excellente idée !

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim c As Range, i As Long, r As Range
    Dim tabcol(1 To 9)
    Dim risquein As Range: Set risquein = Feuil1.Range("U9:AC9")
    Dim risquere As Range: Set risquere = Feuil1.Range("AK9:AS9")

    For i = 1 To 9 'col K à S
        Set tabcol(i) = Feuil1.Cells(4, 10 + i).Resize(1050, 1) 'ligne 4 à 1053
    Next i

    Application.ScreenUpdating = False

    'Faire apparaître et disparaître les colonnes d'impacts du risque

    risquein.EntireColumn.Hidden = True
    risquere.EntireColumn.Hidden = True

    For i = 1 To 9
        ctr = Application.CountIf(tabcol(i), "X") + Application.CountIf(tabcol(i), "x")
        If ctr > 0 Then
            Feuil1.Range("U1").Offset(0, i - 1).EntireColumn.Hidden = False
            Feuil1.Range("AK1").Offset(0, i - 1).EntireColumn.Hidden = False
        End If
    Next i
    Application.ScreenUpdating = True

End Sub

@h2so4 et @Loureed,

Merci c'est parfait! Quand je serai grand, je veux être capable de coder comme vous! Au fait, est-ce indiscret de vous demander où il est possible d'apprendre le codage vba pour devenir top?

Merci encore!

Bonjour,

ce n'est pas indiscret en ce qui me concerne !

Je n'y connaissais rien en 2014, je me suis inscris ici, mon job m'a obligé à trouver des simplifications sur Excel, ceci m'a orienté vers l'enregistreur de macro, et avec la navigation sur Excel-pratique.com et la lecture des réponses des "grands" comme acide (et bien d'autres), plus la volonté d'essayer de répondre moi-même à certaines questions, le développement d'application en tous genres, et bien maintenant j'arrive à peu près à chaque fois à faire ce que je souhaite faire sous Excel.

Alors bien sur, ce n'est pas de la haute précision, ce n'est pas forcément coder dans les règles de l'art, ou bien je fais des détours inutiles, mais je me débrouille.
Bref plutôt "autodidacte" qu'un livre particulier, mais c'est ce qui fait que je me perd avec power machin chose, et que sur bien des sujets je reste contemplatif des solutions sans vraiment réussir à les comprendre !

@ bientôt

LouReeD

Rechercher des sujets similaires à "effectuer boucle"