Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro qui fonctionne pas

  • Initiateur de la discussion Initiateur de la discussion Youri
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Youri

XLDnaute Occasionnel
Bonjour à tous,

Comment faire pour que la macro suivante fonctionne ? :
Code:
Option Explicit
Option Base 1
Sub test()
Dim variablenonvide(4, 4) As Variant
Dim saut_vertical As Integer
Dim saut_horizontal As Byte
Dim variablecompte As Variant
Dim cel As Variant
For saut_vertical = 58 To 103 Step 15
    For saut_horizontal = 3 To 6 Step 1
        If Cells(saut_vertical, saut_horizontal).Value <> 0 And Cells(saut_vertical, saut_horizontal).Value <> "" Then
        variablenonvide(((saut_vertical - 43) / 15), (saut_horizontal - 3)) = Cells(saut_vertical, saut_horizontal).Address
        Else
        variablenonvide(((saut_vertical - 43) / 15), (saut_horizontal - 3)) = 0
        End If
    Next
Next
For Each variablecompte In variablenonvide(4, 4)
    If variablecompte <> 0 Then variablecompte = variablecompte + 1
Next
MsgBox variablecompte
End Sub
Ca me fait l'erreur : l'indice n'appartient pas à la sélection ... je ne comprends pas.

Merci à l'avance pour votre aide,
Youri
 
Dernière édition:
Re : Macro qui fonctionne pas

bonjour youri

je ne sais pas si ca vient de là :


mais le resultat pour la premiere occurence est de 3-3 soit 0
essaye en mettant 2 à la place de 3

j'ai vu autre chose : tu mets dans variablenonvide, l'adresse de la cellule est non pas la celllule
essaye de remplacer (Sans assurance)
variablenonvide(((saut_vertical - 43) / 15), (saut_horizontal - 3)) = Cells(saut_vertical, saut_horizontal).Address
par :
set variablenonvide(((saut_vertical - 43) / 15), (saut_horizontal - 3)) = Cells(saut_vertical, saut_horizontal)
 
Re : Macro qui fonctionne pas

Bonjour Wilfried,

Tu avais effectivement raison pour les chiffres. J'avais pourtant marqué sur ma feuille 2 et pas 3 (faut que j'apprenne à lire) ... Bref, maintenant que ce problème est réglé, j'en ai un nouveau ! Désormais, j'ai une incompatibilité de type dans cette partie du code :
Code:
For Each variablecompte In variablenonvide(4, 4)
    If variablecompte <> 0 Then variablecompte = variablecompte + 1
Next
MsgBox variablecompte
End Sub

Je vous remercie à l'avance,
Youri
 
Re : Macro qui fonctionne pas

re:

tu as essayé la 2eme partie ? cela correspondrait

Je suppose que dans ton code tu desires affecter une cellule à ton tableau or tu y affectes seulement une addresse
essaye ce que je t'ai mis si ca ne marche pas, j'ai une autre idée lol
 
Re : Macro qui fonctionne pas

re

Merci Wilfried pour ton aide, mais je m'en suis tiré en réalisant le code suivant :
Code:
Option Explicit
Option Base 1
Private Sub Worksheet_Change(ByVal Target As Range)
Dim variablenonvide(4, 4) As Variant
Dim saut_vertical As Integer
Dim saut_horizontal As Byte
Dim variablecompte As Byte
Dim cel As Variant
Dim i As Byte
Dim j As Byte
For saut_vertical = 58 To 103 Step 15
    For saut_horizontal = 3 To 6 Step 1
        If Cells(saut_vertical, saut_horizontal).Value = "Oui" Then
        variablenonvide(((saut_vertical - 43) / 15), (saut_horizontal - 2)) = Cells(saut_vertical, saut_horizontal).Address
        Else
        variablenonvide(((saut_vertical - 43) / 15), (saut_horizontal - 2)) = 0
        End If
    Next
Next
For i = 1 To 4
    For j = 1 To 4
        If variablenonvide(i, j) <> 0 Then variablecompte = variablecompte + 1
    Next
Next
If variablecompte > 12 Then
    If Rows("105:147").EntireRow.Hidden = True Then
    Rows("105:147").EntireRow.Hidden = False
    End If
End If
If variablecompte > 8 And variablecompte < 13 Then
    If Rows("105:137").EntireRow.Hidden = True Then
    Rows("105:137").EntireRow.Hidden = False
    End If
End If
If variablecompte > 4 And variablecompte < 9 Then
    If Rows("105:127").EntireRow.Hidden = True Then
    Rows("105:127").EntireRow.Hidden = False
    End If
End If
If variablecompte > 0 And variablecompte < 5 Then
    If Rows("105:117").EntireRow.Hidden = True Then
    Rows("105:117").EntireRow.Hidden = False
    End If
End If
If variablecompte = 0 Then
    If Rows("105:147").EntireRow.Hidden = False Then
    Rows("105:147").EntireRow.Hidden = True
    End If
End If
End Sub

y'en a qui aime se faire des noeuds avec les boyeaux de la tête
😉

Merci à tous,
Youri
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
910
Réponses
4
Affichages
733
Réponses
4
Affichages
281
Réponses
5
Affichages
573
Réponses
15
Affichages
784
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…