Probleme lier à des macros

Bonjour,

Je suis novice dans la VBA et j'ai un problème sur un de mes tableurs.

En effet j'ai créé un fichier Excel me permettant de saisir automatiquement les notes obtenues (extrait d'une extraction) dans un tableau récapitulatif.

Or quand je lance une macro pas de problème, mais dés que je lance une seconde macro, mes formules de moyenne, note plus haute, plus base etc.. ne prend plus en compte certaines notes.

Je vous mets des screens pour visualiser le problème, ainsi qu'un fichier minimaliste du mon problème.

probleme macro1 probleme macro2

Nous pouvons constater sur l'exemple que quand nous lançons la macro 1.3 (après avoir exécuté la 1.1) le résultat des formules autres que la dernière exécutée sont différentes car certaine valeur ne sont plus prisent en compte.

Je ne sais pas si j'ai été assez claire, mais je vous remercie par avance du temps consacré à m'avoir lu

10ects-copie.xlsm (184.61 Ko)

Bonjour,

Regarde les notes colonne Sess1 certaines sont à virgule d'autres sont avec point.

Ce n'est pas normal pour excel.

Enlèves l'alignement centré tu pourras constater pour le mauvais format ceux alignés vers la gauche.

Verifier le codage macro qui ne doit pas être le même dans toutes les macros. ou la personne qui a saisie avec virgule au lieu de point.

Merci pour ta réponse !

Pour l'histoire des points et virgules, de base mon extraction est avec des points sur les notes, du coup la première action de mes macros est de convertir les points en virgule directement sur l'onglet extraction.

Quand tu lance une macro tout est parfait pour la colonne qu'il modifie mais le problème est qu'il touche au valeur (ou au format) des cellules des autres notes

Ca fait 3 jours que je me casse la tête avec ce problème.

Je suis novice et mon fichier est surtout construit de bricolage... voila ce qui arrive quand t-on rafistole chaque petit problème rencontré.

Pas sur de tout comprendre.

Tes boutons pour lancer les macros sont dans l'onglet Semestre 1 mais toutes tes

macro commencent de la même façon :

Columns("G:G").Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

Je pense que tu veux parler de la colonne G dans l'onglet "Extraction" non ?

Dans ce cas on n'est pas sur la bonne feuille quand tu clic sur un bouton.

çà devrait commencer par :

Sheets("Extraction").Select
Columns("G:G").Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

Effectivement je veux bien copier la colonne G pour remplacer les points par des virgules.

J'ai donc modifié mes macros par :

Sheets("Extraction").Select

Columns("G:G").Select

Mais rien a faire, il y a encore l'erreur sur la prise en compte de certain chiffre en tant que telle pour mes calcules de moyenne, note la plus haute etc..

Pour créer mes macros j'ai utilisé l'enregistreur et ensuite j'ai fait des copier / coller en modifiant seulement quelques données, d'où le fichier un peu bancale

Comme je ne comprends pas tout on va essayer de faire ligne par ligne pour 1 macro …..

cela va déjà simplifier avec les lignes inutiles qui gênent la lecture.

Sub extr_sem1_1_1()
' extr_sem1_1_1 Macro 'info nom de macro ok
Sheets("Extraction").Select ' sélection onglet extraction
    Columns("G:G").Select  ' sélection colonne G et remplacement des points par virgules ( chez moi c'est l'inverse d'ordinaire on remplace les virgules par points pour qu'excel traite comme nombre.)

    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

    Range("B1").Select   ' ligne inutile un select de B1 alors qu'on est encore dans l'onglet Extraction

    Sheets("Semestre 1").Select
    Range("D8").Select      ' problème D8 est sensé contenir le début de la copie extration et pas une formule
    ActiveCell.FormulaR1C1 = _
        "=IF(ISNA(VLOOKUP(RC[-3],Extraction!C[-3]:C[3],7,FALSE)),"""",VLOOKUP(RC[-3],Extraction!C[-3]:C[3],7,FALSE))"

     Range("D8").Select
    Selection.Copy                   ' Pourquoi on copie D8  ?  
    Range("D9:D129").Select  ' Pourquoi on le Colle de D9 à D129
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False

 ActiveWindow.SmallScroll Down:=-126 ' scroll de souris inutile 

 Range("D8:D129").Select    ' vu déjà le souc avec les copié collé avant  le reste du code ne va pas fonctionner….
    Application.CutCopyMode = False
    Selection.Copy        
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=-129  ' scroll souris inutile
    Range("D8").Select
End Sub

Je modifie demain au travail.

Pour ce qui est de la formule, je fait pas un copié/coller simple de mon extraction mais je fais une RechercheV car les noms ne sont pas toujours à la bonne place dans extraction.

En gros je fait une rechercheV puis un copier/coller des valeurs pour figé les notes.

Merci du temps que tu passe pour m’aider.

Je vire les lignes inutile demain à la première heure et re-post ici après

Ok

Pour simplifier ne serait-il pas plus facile de trier l'extraction par ordre alphabétique (nom - prénnom ) avant le copié collé ?

Et pourquoi trier aussi les lignes de D8 à D129 dans les onglets "Semestre"

Ainsi les données serait toujours dans le même ordre.

Par ailleurs quand je regarde l'onglet extraction dans la colonne G les cellules qui semblent vides ne le sont pas

on dirait qu'il y a un espace dedant ?

Bonjour,

J'ai modifié le code de la macro en supprimant les lignes inutiles par :

Sub extr_sem1_1_1()
'
' extr_sem1_1_1 Macro
'

'
    Sheets("Extraction").Select
    Columns("G:G").Select
    Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Sheets("Semestre 1").Select
    Range("D8").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(ISNA(VLOOKUP(RC[-3],Extraction!C[-3]:C[3],7,FALSE)),"""",VLOOKUP(RC[-3],Extraction!C[-3]:C[3],7,FALSE))"
    Range("D8").Select
    Selection.Copy
    Range("D9:D129").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Range("D8:D129").Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("D8").Select
End Sub

Et je doit avouer que ça marche !!! j'ai plus mon bug ..

Par contre étant donné que je suis avec des pro et que ma curiosité me titille, j'aimerai savoir si dans ma macro avec ma RechercheV est il possible de renvoyer aucun valeur.

En ce moment j'écris manuellement un " " dans la dernière cellule de mon tableau extraction de la colonne des notes (en sachant que le nombre de ligne de mon extraction peu être diffèrent.

Si vous comprenez ce que je viens d'écrire, j'ai de la chance !

Merci

P.S. : je viens de voir ton message.

Les noms est une donnée variable. Un trie est donc à mon sens risqué

Rechercher des sujets similaires à "probleme lier macros"