VBA identifier et copier valeurs d'un tableau

alexvol

XLDnaute Nouveau
Bonjour,

je cherche depuis quelques heures mais malgré mes tests au gré de mes trouvailles sur les différents forums, rien n'y fait.

Voici le problème : j'ai une suite de valeur de 1 à 5.
Etape 1 : Déterminer les nombres pairs uniquement.
Etape 2 : insérer ces nombres pairs dans un nouveau tableau,
Etape 3 : identifier le nombre de valeurs dans ce tableau,
Etape 4 : enfin me servir de ce nombre dans une boucle "for next".

Pour l'étape 1, j'ai tenté d'utiliser une boucle "for next" avec un "step" de 2. Si j'utilise les valeurs obtenues directement, elles sont utilisables.
Mais quand j'essaie de passer à l'étape 2, je bloque... et donc l'étape 3 impossible...

Si quelqu'un a une idée, je suis preneur.

Merci d'avance
 
C

Compte Supprimé 979

Guest
Re : VBA identifier et copier valeurs d'un tableau

Salut alexvol

Si tes chiffres sont dans les cellules A1:A5, tu peux essayer ceci
Code:
Sub Test()
  Dim NbInc As Integer, Inc As Integer
  NbInc = Combien()
  For Inc = 1 To NbInc
    MsgBox "Boucle " & NbInc & " fois"
  Next Inc
End Sub


Function Combien()
  Dim Inc As Integer, NbPair As Integer
  NbPair = 0
  For Inc = 1 To 5
    If Range("A" & Inc) Mod 2 = 0 Then
      NbPair = NbPair + 1
    End If
  Next Inc
  Combien = NbPair
End Function

A+
 

alexvol

XLDnaute Nouveau
Re : VBA identifier et copier valeurs d'un tableau

Merci de ces propositions mais les chiffres ne sont pas dans une feuille.
Quelques explications supplémentaires :
- j'ai une valeur en "A1" ;
- je copie le format des cellules "A2" à "D4".
- je souhaite faire des "collage" en fonction de la valeur en "A1" :
- pour tous les chiffres pairs, à droite de la sélection, si 2, 1 fois avec un simple décalage horizontale, si 4, 1ère copie avec simple décalage horizontale, 2nde copie avec décalage horizontale et verticale, et ainsi de suite ;
- pour tous les chiffres impairs, en dessous de la sélection.
Au départ, pour envisager les différentes possibilités de valeur de "A1", j'avais utilisé un "select case" mais cela peut devenir très long.
Voici le code envisagé au départ :

Code:
Sub CopieFonctionNbreEquipe()
With Worksheets("calendriersType")
    Dim calenType As Range
    Dim celRef As Range
    Dim nbreEquipe As Range
    
    Set celRef = .Range("a5")
    Set nbreEquipe = .Range("i1")
    Set calenType = .Range("a5:d13")
    calenType.Copy
    
    Select Case nbreEquipe
        Case Is = 2
            celRef.Offset(0, 4).PasteSpecial Paste:=xlFormats
        Case Is = 3
        Case Is = 4
        Case Is = 5
    End Select
End With
End Sub

Merci pour toute l'aide que vous m'apporterez
 

alexvol

XLDnaute Nouveau
Re : VBA identifier et copier valeurs d'un tableau

Voici donc un fichier. Les macros posant problème sont dans le module 2.

Dans ce module, deux macros qui servent un peu de test.

Merci pour l'aide
 

Pièces jointes

  • test.xlsm
    65.2 KB · Affichages: 36
  • test.xlsm
    65.2 KB · Affichages: 42
  • test.xlsm
    65.2 KB · Affichages: 39

vgendron

XLDnaute Barbatruc
Re : VBA identifier et copier valeurs d'un tableau

Suis pas sur d'avoir tout compris

la zone multicolore A2D5, c'est le motif que tu veux copier coller autant de fois que tu le demandes en cellule A1 ?
si tu mets 2: tu veux 2 motifs cote à cote
si tu mets 3 2 cotes à cote +1 en dessous du premier
4: 2 *2 motifs l'un en dessous de l'autre.. etc etc...?
 

alexvol

XLDnaute Nouveau
Re : VBA identifier et copier valeurs d'un tableau

En gros c'est le principe, presque :

si 2, un motif à côté,
si 3, un motif à côté et un autre juste dessous,
si 4, un motif à côté, un autre juste dessous et un qui sera en dessous avec un décalage vers la droite,

Merci pour l'aide
 

alexvol

XLDnaute Nouveau
Re : VBA identifier et copier valeurs d'un tableau

Cela fonctionne parfaitement mais j'ai des questions car j'aime comprendre :
- je ne comprends pas le "i < NbDeMotifs" : tant que i est inférieur au nombre de motif, la boucle se poursuit. Mais c'est toujours le cas puisque i a reçu pour valeur 1 juste avant.
- est-il possible de remplacer "Application.Goto Reference:="Motif"" par un simple "range".
Merci pour les réponses
 

Discussions similaires

Réponses
10
Affichages
511
Réponses
29
Affichages
762

Statistiques des forums

Discussions
312 092
Messages
2 085 227
Membres
102 826
dernier inscrit
ag amestan