Soucis Excel 2003 à Excel 2007

Amsa

XLDnaute Nouveau
Bonjour à tous.

J'ai développé un fichier Excel à la base sous Excel 2003, après plusieurs soucis j'avais (enfin) réussis à le faire tourner de façon relativement correct.
Et histoire de faire simple, je me décide à le faire migrer sous Excel 2007... :(

Et là, au niveau du code VBA ça m'a l'aire de ne plus vouloir marcher du tout... mais pourquoi... alors là je m'arrache les cheveux.
Le fichier que je vous joins est une version "Light" du fichier final. Par exemple quand je vais cliquer sur le bouton "Analyse", en principe il récupère des valeurs sur plusieurs pages (2 dans ce fichier) pour les afficher sur la page "Accueil" puis il y a les graphiques qui apparaisse, or là il refuse de récuperer les valeurs de l'onglet "Dépense"....
Donc si vous aviez une idée d'où peut venir le problème et me dire comment le corriger (voir même me faire la correction :) )
Merci par avance .
 

Pièces jointes

  • Test.xlsm
    40.7 KB · Affichages: 53
  • Test.xlsm
    40.7 KB · Affichages: 54
  • Test.xlsm
    40.7 KB · Affichages: 56

Papou-net

XLDnaute Barbatruc
Re : Soucis Excel 2003 à Excel 2007

Bonjour à tous.

J'ai développé un fichier Excel à la base sous Excel 2003, après plusieurs soucis j'avais (enfin) réussis à le faire tourner de façon relativement correct.
Et histoire de faire simple, je me décide à le faire migrer sous Excel 2007... :(

Et là, au niveau du code VBA ça m'a l'aire de ne plus vouloir marcher du tout... mais pourquoi... alors là je m'arrache les cheveux.
Le fichier que je vous joins est une version "Light" du fichier final. Par exemple quand je vais cliquer sur le bouton "Analyse", en principe il récupère des valeurs sur plusieurs pages (2 dans ce fichier) pour les afficher sur la page "Accueil" puis il y a les graphiques qui apparaisse, or là il refuse de récuperer les valeurs de l'onglet "Dépense"....
Donc si vous aviez une idée d'où peut venir le problème et me dire comment le corriger (voir même me faire la correction :) )
Merci par avance .

Bonjour Amsa,

Tu ne peux pas récupérer les valeurs de la feuille Dépenses car tu testes l'index de la feuille dans ta boucle (ligne bleue):

Code:
' Copie les valeurs pour l'Accueil
    x = 1
    For Each s In ActiveWorkbook.Sheets
        [COLOR="Blue"]If s.Index < Sheets("Accueil").Index Then[/COLOR]
             x = x + 1
            [COLOR="Red"]Cells(x, 6) = s.Name[/COLOR]
            Set c = s.Range("E2:E" & s.Range("E65000").End(xlUp).Row)
            Cells(x, 7) = Application.Sum(c)
        End If
    Next

Donc, pour que ça fonctionne, il faut que tu déplaces ton onglet Accueil sur la droite de l'onglet Dépenses.

Mais tu vas être confronté à une erreur, car dans ta colonne F, tu as le nom Dépenses que tu essaies de convertir en mois (lignes rouges):

Code:
' // A prioris c'est par ici qu'il y a le problème ....

    Dim cel As Range
    Dim mois As String
    Dim r As Range
    Dim année As String
    
    For Each cel In Sheets("Accueil").Range("F2:F" & Sheets("Accueil").Range("F1").End(xlDown).Row)
        If cel.Value <> "" Then
            [COLOR="Red"]mois = Format(CStr(Month(cel.Value)), "00")
            année = Format(CStr(Year(cel.Value)), "0000")[/COLOR]
            Set r = Sheets("Dépense").Columns(1).Find(mois & "-" & année, , xlValues, xlPart)
            If Not r Is Nothing Then cel.Offset(0, 4).Value = r.Offset(0, 1).Value Else cel.Offset(0, 4).Value = "0"
        End If
    Next cel

Espérant t'avoir mis sur la piste.

Cordialement.
 

Amsa

XLDnaute Nouveau
Re : Soucis Excel 2003 à Excel 2007

Bonjour Amsa,

Tu ne peux pas récupérer les valeurs de la feuille Dépenses car tu testes l'index de la feuille dans ta boucle (ligne bleue):

Code:
' Copie les valeurs pour l'Accueil
    x = 1
    For Each s In ActiveWorkbook.Sheets
        [COLOR="Blue"]If s.Index < Sheets("Accueil").Index Then[/COLOR]
             x = x + 1
            [COLOR="Red"]Cells(x, 6) = s.Name[/COLOR]
            Set c = s.Range("E2:E" & s.Range("E65000").End(xlUp).Row)
            Cells(x, 7) = Application.Sum(c)
        End If
    Next

Donc, pour que ça fonctionne, il faut que tu déplaces ton onglet Accueil sur la droite de l'onglet Dépenses..

C'est sur la section de code suivante que je récupère mes valeurs de la feuille "Dépense" (celle qui est détaillé sur le point suivant si dessous)

Mais tu vas être confronté à une erreur, car dans ta colonne F, tu as le nom Dépenses que tu essaies de convertir en mois (lignes rouges):

Code:
' // A prioris c'est par ici qu'il y a le problème ....

    Dim cel As Range
    Dim mois As String
    Dim r As Range
    Dim année As String
    
    For Each cel In Sheets("Accueil").Range("F2:F" & Sheets("Accueil").Range("F1").End(xlDown).Row)
        If cel.Value <> "" Then
            [COLOR="Red"]mois = Format(CStr(Month(cel.Value)), "00")
            année = Format(CStr(Year(cel.Value)), "0000")[/COLOR]
            Set r = Sheets("Dépense").Columns(1).Find(mois & "-" & année, , xlValues, xlPart)
            If Not r Is Nothing Then cel.Offset(0, 4).Value = r.Offset(0, 1).Value Else cel.Offset(0, 4).Value = "0"
        End If
    Next cel
Le nom Dépenses ne fait pas partis des valeurs que je cherche a convertir du fait que je commence la recherche en F2...

Espérant t'avoir mis sur la piste.

Cordialement.
Merci tout de même de t'être penché sur mon problème.
 

Roland_M

XLDnaute Barbatruc
Re : Soucis Excel 2003 à Excel 2007

bonsoir

fais ceci est tu comprendras pourquoi
avec MsgBox tu copies ceci avant find

MsgBox Sheets("Dépense").Cells(2, 1) & vbLf & mois & "-" & année

Sheets("Dépense").Cells(2, 1) . . . donne "1-2010"
mois & "-" & année . . . donne "01-2010"
donc find ne trouve pas

il faut adapter tes formats idem !
dans Dépenses tu mets '1-2010 il faut '01-2010
ou alors dans le code pas de format !?


EDIT: voir ci-joint
 

Pièces jointes

  • Test.zip
    27.4 KB · Affichages: 21
  • Test.zip
    27.4 KB · Affichages: 20
  • Test.zip
    27.4 KB · Affichages: 21
Dernière édition:

Amsa

XLDnaute Nouveau
Re : Soucis Excel 2003 à Excel 2007

bonsoir

fais ceci est tu comprendras pourquoi
avec MsgBox tu copies ceci avant find

MsgBox Sheets("Dépense").Cells(2, 1) & vbLf & mois & "-" & année

Sheets("Dépense").Cells(2, 1) . . . donne "1-2010"
mois & "-" & année . . . donne "01-2010"
donc find ne trouve pas

il faut adapter tes formats idem !
dans Dépenses tu mets '1-2010 il faut '01-2010
ou alors dans le code pas de format !?

Super, un grand merci à toi !
 

Discussions similaires

Réponses
5
Affichages
360
Réponses
2
Affichages
330

Statistiques des forums

Discussions
312 497
Messages
2 088 994
Membres
104 000
dernier inscrit
dinelcia