Création d'un nouveau programme qui ne fonctionne pas

Bonjour à tous et merci pour votre aide que vous allez m'apporter.

Voila les premières lignes de mon nouveau programme qui ne fonctionne pas.

Pouvez vous me corriger ou me dire ce qui ne va pas. Merci

Sub MoisCumulés()
     Dim val1 As Double, val2 As Double, val3 As Double, val4 As Double, TIM As Double
     Dim feuille As Integer, ligtitreR As Integer, ligtitreC As Integer, Ci As Integer, Ri   As Integer
     Dim lignetotalRx As Integer, lignetotalC As Integer, ligsstotR As Integer
     Dim wsMois As Worksheets
     Dim wsCumul As Worksheets
     Dim zoneRx As Range
     feuille = 1   'feuille représente le numéro du mois de 1 à 12
     Set wsMois = Sheets("R" & feuille)  '     ( imcompatibilité de type )
     Set wsCumul = Sheets("Cumul") 'Feuille de reception des différents mois       ( imcompatibilité de type )
     wsMois.Select
     Set Sheets("R" & feuille).zoneRx = wsMois.Range(Cells(1, 1), Cells(1, 12)) '|selection de la ligne des titres des colonnes du tableau pour la mettre dans la feuille Cumul j'aurais pu mettre wsMois à la place de sheets("R" & feuille) mais cela ne fonctionne pas
     lignetotalRx = Cells(Rows.Count, 1).End(xlUp).Row
     wsCumul.Select
     wsCumul.Cells.ClearFormats
     wsCumul.Cells.ClearContents
     zoneRx.Copy Destination:=wsCumul.Cells(1, 1)
     For feuille = 1 To 12
          Set wsMois = Sheets("R" & feuille)

     Next feuille

Hello,

supprimez ces z'esses en trop

     Dim wsMois As Worksheet
     Dim wsCumul As Worksheet

Bonjour

Un fichier est TOUJOURS le bienvenu

Dim wsMois As Worksheet, wsCumul As Worksheet 'sans S
Set wsMois = Sheets("R" & CStr(feuille)) 

N'ayant pas de fichier je n'ai pas testé le reste

A+ François

Nain porte koi, fanfan38, merci de me répondre

effectivement mon nouveau code fonctionne mais pas comme je le voudrai; pour éviter de jouer au ping-pong entre les deux feuilles, Rx et Cumul

J'aimerai écrire directement, pour ne pas faire des "select" de la feuille Rx :

zoneRx=wsMois.Range(Cells(1,1), cells(1,12))

lignetotalRx= wsMois.Cells(Row.Count, 1).End(xlUp).row

mais cela ne fonctionne pas. Y-a-t-il une erreur ou bien ce n'est pas possible?

Sub MoisCumulés()
     Dim val1 As Double, val2 As Double, val3 As Double, val4 As Double, TIM As Double
     Dim feuille As Integer, ligtitreR As Integer, ligtitreC As Integer, Ci As Integer, Ri   As Integer
     Dim lignetotalRx As Integer, lignetotalC As Integer, ligsstotR As Integer
     Dim wsMois As Worksheet
     Dim wsCumul As Worksheet
     Dim zoneRx As Range
     feuille = 1   'feuille représente le numéro du mois de 1 à 12
     Set wsMois = Sheets("R" & feuille)
     Set wsCumul = Sheets("Cumul") 'Feuille de reception des différents mois
     wsMois.Select
     Set zoneRx = Range(Cells(1, 1), Cells(1, 12)) '|selection de la ligne des titres des colonnes du tableau pour la mettre dans la feuille Cumul
     lignetotalRx = Cells(Rows.Count, 1).End(xlUp).Row
     wsCumul.Select
     wsCumul.Cells.ClearFormats
     wsCumul.Cells.ClearContents
     zoneRx.Copy Destination:=wsCumul.Cells(1, 1)
     For feuille = 1 To 12
          Set wsMois = Sheets("R" & feuille)
     Next feuille
End Sub

Re,

Comme dit précédemment un fichier est TOUJOURS le bienvenu

Et utiliser des tableau croisé dynamique simplifie grandement les choses

A+ François

Bonjour

Power Query est souvent intéressant également, mais difficile sans fichier/copie d'écran...

Sinon Integer = 32 767 max. Attention avec lignetotalRx = Cells(Rows.Count, 1).End(xlUp).Row

Je préfère mettre mes variables en Long.

Stéphane

fanfan38, merci pour cette réponse.

Pour l'instant je n'en suis que là. La suite de ce que je vais écrire comme code dépends de vos réponses à propos des sélections entre les feuilles Rx et Cumul.

Je n'ai pas envisager de tableau croisé dynamique. Bien que j'en ai déjà utilisés dans le passé j'ai oublié leurs fonctionnement mais si vous pensez que c'est plus simple pourquoi pas. Si c'est possible une simple explication devrait suffire.

Merci

rraccourcix, merci de vous pencher sur mon problème.

Pour les tableaux croisés dynamique je peux m'y remettre mais pour Power Query je ne sais absolument rien.

Vous préférez mette les variables en long; Pouvez m'expliquer pourquoi?

Merci

Montre nous ce que tu as et je te montrerai ma solution

A+ François

de mon coté, ma réflexion était qu'il y a plus de 1 000 000 de lignes dans Excel et donc que lignetotalRx peut dépasser la valeur max d'une variable définie en Integer.

d'où l'intérêt de la définir en "Long" afin de ne pas avoir d'erreur

Stéphane

Bonsoir le fil,
Hé oui pas encore couché...

Vous préférez mette les variables en long; Pouvez m'expliquer pourquoi?

Les nouveaux PC et Excel travaille mieux en Long ils sont prévu pour cela, deuxièmement comme expliqué plus haut cela vous éviteras des dépassements de capacité.
Si votre but et de copier les données des feuilles "R##" Voici un bout de code qu'l faudra finaliser je pense qui fait le travail. J'ai commenté les partie critiques.

Sub MoisCumules()
    '// Puisque vous travaillez sur le même classeur
    '// Donnez un nom de code à vos feuilles et utilisez les. Cela simplifiera le code final.
    '// Donc pour la feuille "Cumul" nom de code : "sh_Cumul"
    '// Prenez l'habitude de regrouper les propriétés sous un 'With'

    '// On efface la feuille de destination
    With sh_Cumul
        .Cells.ClearContents
        .Cells.ClearFormats
    End With

    '// On copie les données d'entêtes
    Dim headerNames As Variant
    headerNames = ThisWorkbook.Worksheets("R1").Range("A1:L1").Value
    '// Si tableau structuré on prends les entête du dis tableau
    'headerNames = ThisWorkbook.Worksheets("R1").Range("Tableau1").ListObject.HeaderRowRange.Value

    '//On colle les entêtes
    sh_Cumul.Range("A1").Resize(1, UBound(headerNames, 2)).Value = headerNames
    Dim position As Range
    Set position = sh_Cumul.Range("A2")

    '//On boucle sur toutes les feuilles
    Dim itemSheet As Worksheet
    For Each itemSheet In ThisWorkbook.Worksheets
        With itemSheet
            '// On vérifie si c'est une feuille de mois
            If .Name Like "R#*" Then
                Dim entieresValeurs As Variant

                '// On charge un tableau avec les valeurs
                entieresValeurs = .Range("A2:L" & .Cells(.Rows.Count, 1).End(xlUp).Row).Value

                '// On redimmensionne le tableau d'arrivée et on colle les données
                position.Resize(UBound(entieresValeurs, 1), UBound(entieresValeurs, 2)).Value = entieresValeurs

                '// On définit la nouvelle position de départ
                Set position = sh_Cumul.Range("A" & sh_Cumul.Cells(sh_Cumul.Rows.Count, 1).End(xlUp).Row + 1)
            End If
        End With
    Next itemSheet
End Sub

Bonne programmation... Jean-Paul

Rechercher des sujets similaires à "creation nouveau programme qui fonctionne pas"