Un retour dans le forum après quelques romanesques bataille contre ou avec
mon fournisseur internet...
Je souhaiterais compléter la macro que "docm" m'avait très efficacement
concoctée
Les références du messages étaient : (j'ai mis la macro complète à la fin du
message)
De :docm (docmarti@spamcolba.net)
Objet :Re: précisions de précisions
Date :2004-05-11 14:45:02 PST
Cette macro me permettait de passer dans une feuille de notes de ça :
En respectant les regles suivantes :
Recopier l'indication dans feuille 2 si :
- elle appartient à un nom d'élève identique entre les deux feuilles
(colonne feuille 1 et ligne feuille 2)
afin de placer correctement la bonne indication pour le bon élève.
- le coefficient et la note maxi de la colonne feuille 2 est le même que
celui de la ligne feuille 1, si il n' y a pas d'indication alors reporter
l'indication en haut de la colonne, sinon si l'indication n'est pas la même
alors changer de colonne pour créer une nouvelle entrée.
- la cellule d'arrivée (feuille 2) est vide sinon changer de colonne en
indiquant le coef et la note maxi
Je souhaiterais obtenir la même chose mais maintenant j'ai aussi des codes
lettres dans mon tableau feuille 1 que je ne souhaite pas faire apparaître
dans la feuille 2. Cela paraît simple, pourtant ces codes lettres me donnent
l'impression de bloquer la macro qui s'arrête sur une erreur.
Si une ame charitable pouvait m'aider...
Merci d'avance.
Octave.
Rappel macro de docm :
Sub test()
FeuilleOrigine = "Feuil1"
FeuilleDestination = "Feuil2"
If c >= destDerniereColonne Then
destDerniereColonne = c + 1
End If
Exit For
Else
If Val(Sheets(FeuilleDestination).Cells(destLigneCoeff, c).Value) =
Val(coef) Then
If Val(Sheets(FeuilleDestination).Cells(destLigneNoteMaxi, c).Value)
= Val(NoteMaxi) Then
'Eliminer les cellules vides NbreDeLignes = ActiveSheet.UsedRange.Rows.Count NbreDeColonnes = ActiveSheet.UsedRange.Columns.Count
For colonne = 2 To NbreDeColonnes For ligne = 3 To NbreDeLignes If Cells(ligne, colonne) = "" Or Not IsNumeric(Trim(Cells(ligne, colonne))) Then Coef = Cells(1, colonne) notemaxi = Cells(2, colonne)
For x = colonne + 1 To NbreDeColonnes NoteEleve = Cells(ligne, x) If Trim(NoteEleve) <> "" Then coef2 = Cells(1, x) notemaxi2 = Cells(2, x)
If coef2 = Coef And notemaxi2 = notemaxi Then
Cells(ligne, colonne) = Cells(ligne, x) Cells(ligne, x) = "" Exit For End If End If Next x
End If Next ligne Next colonne
'Supprimer les colonnes vides For colonne = NbreDeColonnes To 2 Step -1 Vide = True For ligne = 3 To NbreDeLignes If Trim(Cells(ligne, colonne)) <> "" Then Vide = False End If Next
If Vide = True Then
Columns(colonne).Select Selection.Delete Shift:=xlToLeft End If Next
Exit Sub '--------------- 'Facultatif: Efectuer un tri horizontal
'Eliminer les cellules vides
NbreDeLignes = ActiveSheet.UsedRange.Rows.Count
NbreDeColonnes = ActiveSheet.UsedRange.Columns.Count
For colonne = 2 To NbreDeColonnes
For ligne = 3 To NbreDeLignes
If Cells(ligne, colonne) = "" Or Not IsNumeric(Trim(Cells(ligne,
colonne))) Then
Coef = Cells(1, colonne)
notemaxi = Cells(2, colonne)
For x = colonne + 1 To NbreDeColonnes
NoteEleve = Cells(ligne, x)
If Trim(NoteEleve) <> "" Then
coef2 = Cells(1, x)
notemaxi2 = Cells(2, x)
If coef2 = Coef And notemaxi2 = notemaxi Then
Cells(ligne, colonne) = Cells(ligne, x)
Cells(ligne, x) = ""
Exit For
End If
End If
Next x
End If
Next ligne
Next colonne
'Supprimer les colonnes vides
For colonne = NbreDeColonnes To 2 Step -1
Vide = True
For ligne = 3 To NbreDeLignes
If Trim(Cells(ligne, colonne)) <> "" Then
Vide = False
End If
Next
If Vide = True Then
Columns(colonne).Select
Selection.Delete Shift:=xlToLeft
End If
Next
Exit Sub
'---------------
'Facultatif: Efectuer un tri horizontal
'Eliminer les cellules vides NbreDeLignes = ActiveSheet.UsedRange.Rows.Count NbreDeColonnes = ActiveSheet.UsedRange.Columns.Count
For colonne = 2 To NbreDeColonnes For ligne = 3 To NbreDeLignes If Cells(ligne, colonne) = "" Or Not IsNumeric(Trim(Cells(ligne, colonne))) Then Coef = Cells(1, colonne) notemaxi = Cells(2, colonne)
For x = colonne + 1 To NbreDeColonnes NoteEleve = Cells(ligne, x) If Trim(NoteEleve) <> "" Then coef2 = Cells(1, x) notemaxi2 = Cells(2, x)
If coef2 = Coef And notemaxi2 = notemaxi Then
Cells(ligne, colonne) = Cells(ligne, x) Cells(ligne, x) = "" Exit For End If End If Next x
End If Next ligne Next colonne
'Supprimer les colonnes vides For colonne = NbreDeColonnes To 2 Step -1 Vide = True For ligne = 3 To NbreDeLignes If Trim(Cells(ligne, colonne)) <> "" Then Vide = False End If Next
If Vide = True Then
Columns(colonne).Select Selection.Delete Shift:=xlToLeft End If Next
Exit Sub '--------------- 'Facultatif: Efectuer un tri horizontal