Pb Code

Résolu
Louloude74 Messages postés 62 Statut Membre -  
Louloude74 Messages postés 62 Statut Membre -
Bonjour à tous,

Si j'avais des cheveux je serai en train de tous me les arracher. Il y a un truc que je ne comprend pas. Il y a ce bout de code

If Application.WorksheetFunction.CountIf(ActiveWorkbook.Sheets("Catégorie").Range(Cells(2, Colonne), Cells(LigneDes + 1, Colonne)), ActiveWorkbook.Sheets("Saisie").Range("Description").Value) = 0 Then

qui fonctionne très bien lorsque je suis sur la bonne feuille ici "Catégorie". Par contre dès que je lance la macro depuis une autre feuille j'ai un message d'erreur et je dois manuellement sélectionner la feuille "Catégorie" puis relancer la macro pour que ça fonctionne. Ce que je ne comprend pas c'est que ça fonctionne très bien avec une autre macro où j'utilise le même bout de code.

Si une âme charitable a une explication, je suis preneur.

Par avance merci de votre aide.

1 réponse

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    En effet marche pas dans cette ecriture, mais ok comme ceci

    Sub test()
        Dim t As Range
        
        colonne = 1
        lignedes = 7
        With Worksheets("Categorie")
            Set t = .Range(.Cells(2, colonne), .Cells(lignedes + 1, colonne))   'mise en memoire
        End With
        If Application.CountIf(t, Worksheets("Saisie").Range("Description").Value) = 0 Then
            MsgBox "Pas trouve"
        Else
            MsgBox "Trouve au moins une fois"
        End If
    End Sub
    1
    1. Louloude74 Messages postés 62 Statut Membre 1
       
      Bonjour,

      Ca marche extraordinairement bien. Je suis super content.

      Vraiment merci beaucoup. Mes cheveux commencent à pousser à nouveaux ;)

      Un énorme MERCI.

      Bonne journée et à très bientôt. (et oui j'aurai bientôt de nouvelles questions).

      Cdt, Ludwig
      0
    2. Louloude74 Messages postés 62 Statut Membre 1
       
      Bonjour à toi,

      Je reviens à la charge. JE suis confronter au même problème que précédemment et j'ai adapté ta solution à ce code mais le problème persiste. Il faut que je sois sur la feuille 3Catégorie" pour que cela fonction mais si je lance la macro depuis une autre feuille, c'est débogage.
      Dans ce code je souhaite renommer une plage de cellule en fonction d'une valeur. Le but est de pouvoir utiliser ce nom de cellule ou de page de cellule dans une liste déroulante en cascade. Comme ceci la plage s'ajustera automatiquement en fonction des saisies.

      Encore merci et à très vite.

      Sub NommerPlageDescription()

      Dim Plage As Range
      Dim Cellule As Range
      Dim Ligne As Integer
      Dim Colonne As Integer
      Dim ColonneFin As Integer

      ColonneFin = Sheets("Catégorie").Cells(1, Cells.Columns.Count).End(xlToLeft).Column
      Colonne = 2

      While Colonne <= ColonneFin

      Ligne = Worksheets("Catégorie").Cells(65536, Colonne).End(xlUp).Row

      With Worksheets("Catégorie")
      Set Plage = .Range(.Cells(2, Colonne), .Cells(Ligne, Colonne)) 'mise en memoire
      Set Cellule = Cells(1, Colonne)
      End With

      ActiveWorkbook.Names.Add Name:=Replace(Cellule.Value, " ", ""), RefersToR1C1:=Plage 'Renomme la cellule

      Colonne = Colonne + 1
      Ligne = Ligne + 1

      Wend

      End Sub
      0
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,
      Deja pourquoi ceci: Replace(Cellule.Value, " ", "")
      0
    4. Louloude74 Messages postés 62 Statut Membre 1
       
      Bonjour à toi,

      Tout d'abord merci de te pencher sur mon problème et qui plus est de au pied levé !

      J'utilise replace() pour enlever les espaces entre chaque mot car les mots composés ne sont pas admis pour renommer les cellules ou plage de cellule.
      0
    5. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Certes, certes, alors ne mettez pas de Blanc...........

      Si vous tenez a vos Blancs

      Sub NommerPlageDescription()
          Dim Plage As Range
          Dim Cellule
          Dim Ligne As Integer
          Dim Colonne As Integer
          Dim ColonneFin As Integer
      
          ColonneFin = Worksheets("Catégorie").Cells(1, Cells.Columns.Count).End(xlToLeft).Column
          Colonne = 2
          While Colonne <= ColonneFin
              With Worksheets("Catégorie")
                  Ligne = .Cells(65536, Colonne).End(xlUp).Row
                  Set Plage = .Range(.Cells(2, Colonne), .Cells(Ligne, Colonne)) 'mise en memoire
                  Cellule = Replace(.Cells(1, Colonne), " ", "")
              End With
              ActiveWorkbook.Names.Add Name:=Cellule, RefersToR1C1:=Plage 'Renomme la cellule
              Colonne = Colonne + 1
              Ligne = Ligne + 1
          Wend
      End Sub
      
      0