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

Matrice, décalage de colonnes

  • Initiateur de la discussion Initiateur de la discussion JJ1
  • 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 !

J

JJ1

Guest
Bonjour à tous,

J'ai fait un exemple d'une matrice de nombres allant de 1 à 10 sur 8 colonnes vers la droite
Dans ma partie "résultat", je saisis un nombre (ici le 2) et je souhaite avoir tous les décalages de colonnes pour tous les nombres (colonne 0 si nombre dans la même colonne que le nombre saisi,+1,+2....99 si nombre absent entre deux 2)

Pour la compréhension, j'ai colorié les deux zones

Je joins mon exemple.

Merci de votre aide pour ce calcul où il faut remettre les compteurs de colonne à 0 à chaque apparition du nombre saisi.
Bon samedi.
 

Pièces jointes

Re : Matrice, décalage de colonnes

Bonjour

Et les résultats correspondant à la ligne 2, le 3 et le 5 dans ton exemple, d'où est-ce qu'ils viennent ? Ils donnent le nombre de cellules de la zone bleue et de la zone jaune, c'est ça, non ?

Autre question : Dans ton fichier réel, ton tableau comprend combien de colonnes ?

Et dernière, pour la route : Dans quel domaine utilises tu ce genre de tableau ?

@ plus
 
Dernière édition:
Re : Matrice, décalage de colonnes

Bonsoir cisco,

merci pour ta réponse, j'ai vu que le 5 était en trop, le 3 correspond au décalage +3colonnes à droite après le 2 (ce numéro est choisi)
je n'ai pas encore fait le tablau final, je voudrais savoir la méthode avant (formules ou macro sur ce petit exemple?)
merci à toi.
bonne soirée
 
Re : Matrice, décalage de colonnes

Bonjour le Forum, Cisco,
J'ai fait un nouvel exemple plus détaillé (j'y ai supprimé le 0 qui me posait problème pour mes stats et moyennes) avec l'explication pour les résultats du 1 et du 3 (les résultats sont sous le tableau et non à droite)
Le premier "2" (choisi) ne se trouvant pas nécessairement en colonne 1, j'ai grisé la partie non utilisée (sans un 2 de "départ")
Je continue à le faire à la main, mais si vous aviez une solution (macro ou formule), ça m'aiderait pas mal....(je dirais beaucoup !)
Merci
Bon dimanche à tous.
 

Pièces jointes

Re : Matrice, décalage de colonnes

Bonjour à tous et bon W.E.

On va trouver une solution, faut pas s'inquiéter pour ça... Ca donnera certainement une formule compliquée, mais bon, c'est en train de "murir"... Pour le moment, je bloque sur les 99. Grrrrr

@ plus
 
Dernière édition:
Re : Matrice, décalage de colonnes

Bonjour Cisco,
Tu parles de mûrir avec ce temps .....??
Pour le "99" tu peux remplacer par autre chose (simplement " " ) mais je pense que ça ne va pas t'aider.
Ce n'est pas urgent, je te remercie.
En tout cas, j'imagine déjà la formule coton !
Bon AM
 
Re : Matrice, décalage de colonnes

Bonjour JJ1, CISCO
Si une procédure peut faire l'affaire :
VB:
Sub toto()
Dim i, j, k, l, c, t As Boolean, oDat(), sDat()
  c = [K9].Value
  oDat = [B10:R19].Value
  ReDim sDat(1 To UBound(oDat, 1), 1 To UBound(oDat, 2))
  For i = 1 To UBound(oDat, 1)
    k = 0
    l = 0
    t = False
    For j = 1 To UBound(oDat, 2) - 1
      If Not IsEmpty(oDat(c, j)) Then
        If t Then l = l + 1: sDat(i, l) = 99
        k = j
        t = True
      End If
      If k And Not IsEmpty(oDat(i, j + 1)) Then
        l = l + 1
        sDat(i, l) = j - k + 1
        t = False
      End If
    Next j
    If t Then l = l + 1: sDat(i, l) = 99
  Next i
  [B21].Resize(UBound(sDat, 1), UBound(sDat, 2)).Value = sDat
End Sub
ROGER2327
#4777


Jeudi 19 Sable 138 (Gravidité de Mère Ubu, ST)
29 Frimaire An CCXIX
2010-W50-7T16:57:29Z
 
Re : Matrice, décalage de colonnes

Bonsoir Roger, le Forum

Merci pour ton code, je vais le tester demain dès que j'aurai terminé le tableau final. Je te tiendrai au courant du résultat sur une plage assez importante.Encore merci.
Très bonne soirée à tous.

ps: Roger, nous fêterons bientôt 'Archæoptéryx !!
 
Re : Matrice, décalage de colonnes

Bonjour Roger2327, JJ1

Bon ben, je ne trouve pas de test simple pour mettre les 99 dans le tableau 😡... Comme Roger2327 t'a proposé une solution par macro, ca va qu'en même.

@ plus
 
Re : Matrice, décalage de colonnes

Bonjour Roger, Cisco, Le Forum,

Merci Cisco pour ta recherche.

J'ai un problème avec le code de Roger:
- dans l'exemple, il fonctionne parfaitement.
- dans mon fichier, j'ai adapté les plages (diminuée cause Excel 2003) et la saisie du nombre, je n'obtiens que des 1 ?
Je vais encore regarder cer AM où j'ai oublié une modification.
Merci à vous.
Je joins l'exemple tronqué.
 

Pièces jointes

Re : Matrice, décalage de colonnes

Re…
VB:
Sub toto()
Dim i, j, k, l, c, t As Boolean, oDat(), sDat()
  c = [A59].Value
  oDat = [B9:AK58].Value
  ReDim sDat(1 To UBound(oDat, 1), 1 To UBound(oDat, 2))
  For i = 1 To UBound(oDat, 1)
    k = 0
    l = 0
    t = False
    For j = 1 To UBound(oDat, 2) - 1
      If Not (IsEmpty(oDat(c, j)) Or oDat(c, j) = "") Then
        If t Then l = l + 1: sDat(i, l) = 99
        k = j
        t = True
      End If
      If k And Not (IsEmpty(oDat(i, j + 1)) Or oDat(i, j + 1) = "") Then
        l = l + 1
        sDat(i, l) = j - k + 1
        t = False
      End If
    Next j
    If t Then l = l + 1: sDat(i, l) = 99
  Next i
  [B60].Resize(UBound(sDat, 1), UBound(sDat, 2)).Value = sDat
End Sub
La procédure proposée précédemment fonctionne avec l'exemple de données que vous aviez fournies. Si vous changez de problème, la solution change… Ne serait-il pas plus raisonnable (et plus correct vis-vis de ceux qui cherchent les solutions) de poser le vrai problème plutôt qu'un autre qui ne se pose pas ? Nous y gagnerions notre temps.​
ROGER2327
#4782


Vendredi 20 Sable 138 (Saint Sabre, allopathe, SQ)
30 Frimaire An CCXIX
2010-W51-1T13:08:32Z
 
Re : Matrice, décalage de colonnes

Rebonjour,

Merci Roger, ce code fonctionne parfaitement.
Il me semblait pourtant avoir été assez fidèle dans mon exemple au fichier que je suis en train de terminer? Seule les plages diffèrent et je les avais modifiées dans le code original.
Encore merci et désolé si je n'ai pas été assez précis.
Bon AM
 
Re : Matrice, décalage de colonnes

Bonjour à tous

En pièce jointe, le début de la solution avec des formules, mais aussi avec 4 tableaux intermédiaires 🙂confused🙂. C'est certainement améliorable, mais puisque Roger2327, notre cher ami en 'pataphysique que je salue au passage, t'a donné une solution par macro...

@ plus
 

Pièces jointes

Dernière édition:
Re : Matrice, décalage de colonnes

Bonsoir Cisco,

Je viens d'ouvrir ton fichier (je regarderai demain soir plus en détail), quelle formule colonnes! Bravo! Tu vois que tu as réussi.
Merci car ce n'était pas évident....(le moins que l'on puisse dire !)
Bonne nuit.
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
22
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…