Tableur référence circulaire

Fermé
Signaler
-
 crimoilefort -
Bonjour à vous tous,

J'aimerai obtenir une solution en VBA, pour me permettre d'effectuer des calculs ligne aprés ligne et colonne aprés colonne dans un tableau déjà créé (il commence en C10 et fini en T40). J'ai pensé à une rotation circulaire, mais je ne sais pas vraiement comment faire.
En fait, je fais un premier calcul (de x10 en cd10) que je range dans la cellule C10, puis aprés je dois effectuer ce même calcul, mais sur la ligne 11 (de x11 en cd11) pour le ranger en C11, ainsi de suite pour terminer mon calcul en T40.

La difficulté est que ce calcul doit se faire en permanence sur tout mon tableau et sur chaques cellules.
Merci de m'apporter votre soutient.

Je travaille sous excel 2003

@+
DismoiTout

2 réponses

Messages postés
10616
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
28 novembre 2021
1 239
Bonjour,
Et de quel calcul s'agit-il ?
Bonjour Pingou,

Je voudrais savoir comment on fait une rotation circulaire de cellules de lignes en lignes.
J'aimerai pouvoir incrémenter les cellules (Cells(NumLig, NumCol) une fois que j'ai obtenu mon résultat (petit programme qui tourne déjà). En fait, en premiére opération j'effectue un test sur une ligne (x10;cd10) par rapport à une cellule de référence (C9), le résultat de ce test va en cellule C10 puis aprés je dois effectuer ce même test (toujours la même cellule de référence C9) mais en (x11;cd11) pour ranger le résultat en C11 et ainsi de suite, jusqu'en C40. Cette opération sera identique pour les cellules E10 sachant que la cellule de référence devient E9 et devra se poursuivre jusqu'en E40.

Je te joins mon programme qui tourne déjà:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim a As Range
Dim mon_1 As Double
Application.Volatile True

For Each a In [x10:Cd10]
If a = [C9] And a.Interior.ColorIndex = [C9].Interior.ColorIndex Then
mon_1 = mon_1 + 1
Else: mon_1 = 0
End If
Next
[c10] = mon_1

End Sub

Merci de votre aide
crimoilefort
Messages postés
10616
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
28 novembre 2021
1 239
Bonjour,
Mais, ce poste est identique à https://forums.commentcamarche.net/forum/affich-19669086-faire-une-boucle-de-cellules#1
Est-ce correct ?
Au passage votre procédure se déclenche sur toutes les cellules, ce qui n'est pas correct et en plus votre variable [mon_1] est remise à zéro si une cellule ne satisfait pas au contrôle se qui est bizarre ...!
Salutations.
Le Ping

Effectivement, mais je n'ai toujours pas de réponse ! Alors si quelqu'un peut m'aider !

@+
crimoilefort
Messages postés
10616
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
28 novembre 2021
1 239
Bonjour,
Merci de revoir encore une fois https://forums.commentcamarche.net/forum/affich-19670676-tableur-reference-circulaire#3
Salutations.
Le Ping

Bonjour Pingou,

Le problème c'est que cette fonction range toutes les informations dans la même cellule, alors que moi je désire faire le test sur une plage de la ligne 10 pour ranger le résultat en C10, puis faire le même test mais sur une plage identique mais en ligne 11 pour le ranger dans la cellule de dessous (en C11), ainsi de suite jusqu'en C40. Aprés cela, je dois procéder de la m^me façon mais en changeant de colonne de référence (D9) pour effectuer ce même test pour placer le résultat en D10 (plage de la ligne) pour finir, aprés avoir effectuer ce même test jusqu'en colonne T et derniére cellule 40.

Si quelqu'un peut m'aider.
Merci à vous !
crimoilefort
Messages postés
10616
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
28 novembre 2021
1 239
Bonjour,
Voici le code selon se que j'ai compris:
Je vous rapelle ceci : votre procédure [SelectionChange] se déclenche sur toutes les cellules, ce qui n'est pas correct ( je ne l'ai pas modifié)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim a As Range
Dim co As Long, li As Long, resu As Long
Application.ScreenUpdating = False
' boucle sur colonne C et D
For co = 3 To 4
' boucle pour les lignes 10 à 40
    For li = 10 To 40
        For Each a In Range("X" & li & ":CD" & li)
            If a = Cells(9, co) And a.Interior.ColorIndex = Cells(9, co).Interior.ColorIndex Then
                resu = resu + 1
            End If
        Next
        Cells(li, co).Value = resu: resu = 0
    Next li
Next co
Application.ScreenUpdating = True
End Sub

Merci Le Pingou,

J'ai juste changé une ligne et hop ! Merci encore !

crimoilefort