macro "boucle" qui stoppe sans raison (enfin sans que je connaisse la raison)

  • Initiateur de la discussion Initiateur de la discussion Profane
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Profane

XLDnaute Occasionnel
Bonjour a tous,

le but de ma macro est de controler dans une colonne que des cellules ne sont pas vides
si tel est le cas : remplacer "" par "NR"
le soucis c'est que la macro stop et qu'il fdaut que je la relance plusieurs fois pour qu'elle traite toute la colonne

voici le code
Code:
Sub VerificationChampsNonVide()
' Déclaration des variables
Dim C As Range

'Impact sur feuille
With Sheets("Import_Hosting")
    For Each C In Range("SourcesOfTicket")
    If C = "" Then
    C = "NR" ' NR pour non renseigné
        End If
        Next C

End With
End Sub

pour précision le champ "SourceOfTickets" = =DECALER(Import_Hosting!$S$2;;;NBVAL(Import_Hosting!$S:$S)-1)

merci d'avance pour votre aide
 
Re : macro "boucle" qui stoppe sans raison (enfin sans que je connaisse la raison)

Bonjour

je pense que le piège vient que si tu as des cellules vides, le nbval de ton décaler ne reflètera pas la dernière cellule écrite de la colonne

Derligne=range("S65536").end(xlup).row
te donne la dernière ligne

et après tu boucles de 2 à derligne ou tu utilises decaler DECALER(Import_Hosting!$S$2;;;derligne-2)

a ajuster à 1 près sans doute (le pb éternel des poteaux et des intervalles
 
Re : macro "boucle" qui stoppe sans raison (enfin sans que je connaisse la raison)

Bonjour,

essaye peut être ainsi :
Code:
On Error Resume Next
Range("SourcesOfTicket").SpecialCells(xlCellTypeBlanks).Value = "NR"
On Error GoTo 0

bon après midi
@+

Edition : bonjour Eric🙂
 
Re : macro "boucle" qui stoppe sans raison (enfin sans que je connaisse la raison)

Bonjour Eric,
le probleme est que la colonne peut ne pas etre en S
en fait je fais au préalable une macro qui lit les en tetes
et la fonction decaler et faite par se biais, je ne peux donc pas coder en "dure" Derligne=range("S65536").end(xlup).row
voir le code joint
Code:
Sub Nommer_plageImp2()
' l'idée est de lire les en tete de colonne, de les nommer, et de les référencer dans le gestionnaire de noms,
' afin d'être sur que les formules "pointent" au bon endroit
Sheets("Import_Hosting").Activate
Dim i As Integer
With Sheets("Import_Hosting")
For i = 1 To 26

    If .Cells(1, i) = "Service Type*" Then
    .Cells(1, i) = "Category"
    ActiveWorkbook.Names.Add Name:="Categories", RefersToR1C1:="=OFFSET(R2C" & i & ",,,COUNTA(C" & i & ")-1)"
    ElseIf .Cells(1, i) = "Operational Categorization Tier 1" Then
    ActiveWorkbook.Names.Add Name:="OpsCatTier1", RefersToR1C1:="=OFFSET(R2C" & i & ",,,COUNTA(C" & i & ")-1)"
        Columns(i).NumberFormat = "General"
    ElseIf .Cells(1, i) = "Operational Categorization Tier 2" Then
    ActiveWorkbook.Names.Add Name:="OpsCatTier2", RefersToR1C1:="=OFFSET(R2C" & i & ",,,COUNTA(C" & i & ")-1)"
        Columns(i).NumberFormat = "General"
    ElseIf .Cells(1, i) = "Product Categorization Tier 1" Then
    ActiveWorkbook.Names.Add Name:="ProdCatTier1", RefersToR1C1:="=OFFSET(R2C" & i & ",,,COUNTA(C" & i & ")-1)"
        Columns(i).NumberFormat = "General"
    ElseIf .Cells(1, i) = "Product Categorization Tier 2" Then
    ActiveWorkbook.Names.Add Name:="ProdCatTier2", RefersToR1C1:="=OFFSET(R2C" & i & ",,,COUNTA(C" & i & ")-1)"
        Columns(i).NumberFormat = "General"
    ElseIf .Cells(1, i) = "Status*" Then
    ActiveWorkbook.Names.Add Name:="StatusOfTicket", RefersToR1C1:="=OFFSET(R2C" & i & ",,,COUNTA(C" & i & ")-1)"
        Columns(i).NumberFormat = "General"
    ElseIf .Cells(1, i) = "Reported Source" Then
    ActiveWorkbook.Names.Add Name:="SourcesOfTicket", RefersToR1C1:="=OFFSET(R2C" & i & ",,,COUNTA(C" & i & ")-1)"
        Columns(i).NumberFormat = "General"
    
    
Exit For
End If
Next i
End With
End Sub
@+
 
Re : macro "boucle" qui stoppe sans raison (enfin sans que je connaisse la raison)

re

tu peux toujours jouer avec l'offset que tu peux déterminer quand tu nommes, en fonction de la catégorie cherchée

range("A65536).offset(0,monoffset).end(....

modif : j'ai répondu un peu vite :

for i=1 to 26
derligne = Cells(65536, i).End(xlUp).Row

if.......


et dans tes decaler tu te sers de derligne
 
Dernière édition:
Re : macro "boucle" qui stoppe sans raison (enfin sans que je connaisse la raison)

Bonjour à tous


Au lieu de
Code:
=DECALER(Import_Hosting!$S$2;;;NBVAL(Import_Hosting!$S:$S)-1)
avez-vous essayé ce qui quit ?
Code:
=DECALER(Import_Hosting!$S$2;;;MAX((Import_Hosting!$S:$S<>"")*LIGNE($S:$S))-1)



ROGER2327
#5816


Vendredi 6 Palotin 139 (Sainte Oneille, gourgandine - fête Suprême Quarte)
6 Floréal An CCXX, 5,3995h - ancolie
2012-W17-3T12:57:32Z
 
Re : macro "boucle" qui stoppe sans raison (enfin sans que je connaisse la raison)

Re

n'ayant pas le fichier je n'ai pas testé mais essaie

Code:
Sub Nommer_plageImp2()
 ' l'idée est de lire les en tete de colonne, de les nommer, et de les référencer dans le gestionnaire de noms,
 ' afin d'être sur que les formules "pointent" au bon endroit
 Sheets("Import_Hosting").Activate
 Dim i As Integer
 With Sheets("Import_Hosting")
 For i = 1 To 26
    '
    derligne = .Cells(65536, i).End(xlUp).Row)
    '
    If .Cells(1, i) = "Service Type*" Then
     .Cells(1, i) = "Category"
     ActiveWorkbook.Names.Add Name:="Categories", RefersToR1C1:="=OFFSET(R2C" & i & ",,,derligne-2)"
     ElseIf .Cells(1, i) = "Operational Categorization Tier 1" Then
     ActiveWorkbook.Names.Add Name:="OpsCatTier1", RefersToR1C1:="=OFFSET(R2C" & i & ",,,derligne-2)"
         Columns(i).NumberFormat = "General"
     ElseIf .Cells(1, i) = "Operational Categorization Tier 2"
.....
 
Re : macro "boucle" qui stoppe sans raison (enfin sans que je connaisse la raison)

Re,

peut être mettre sur le forum un tout petit fichier représentant unquement le problème posé.... plus facile pour t'aider....

Voilà une idée qu'elle est bonne !



ROGER2327
#5817


Vendredi 6 Palotin 139 (Sainte Oneille, gourgandine - fête Suprême Quarte)
6 Floréal An CCXX, 5,4180h - ancolie
2012-W17-3T13:00:11Z
 
Re : macro "boucle" qui stoppe sans raison (enfin sans que je connaisse la raison)

j'ai répondu trop vite à Pierrot
ca fonctionne juste en modifiant le on error goto 0 -> sortie
Code:
Sub VerificationChampsNonVide()
' Déclaration des variables
Dim C As Range

'Impact sur feuille
With Sheets("Import_Hosting")
     For Each cell In Range("SourcesOfTicket")
    Range("SourcesOfTicket").SpecialCells(xlCellTypeBlanks).Value = "NR"
   On Error GoTo sortie
    Next
sortie:
    End

End With
End Sub
je vais regarder quand meme les optimisations proposer par Eric et Roger
bonne journée a tous et merci pour votre temps
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
620
Retour