Convertir différentes données / formats en un seul

Enlève le Private Sub elle réapparait

Bonne journée !

ah cool, merci ! J'ai juste retiré "Private" mais laissé Sub. Du coup que signifie Private dans ces cas là ?

Le fait d'intégrer Private Sub ne permet à la procédure de se déclencher que sur la feuille où se trouve le code.

Donc si j'avais bien compris (je débute aussi en VBA) :

  • Soit tu met private sub mais tu y met un bouton pour l'activer sur ta feuille ou ta barre des tâches en y affectant la macro en recopiant le nom exact de cette dernière
  • Soit tu la lance à partir du menu macro en recopiant à chaque fois le nom exact de la macro dans la barre de saisie
  • Soit tu enlèves le private et tu peux à ce moment là l'activer à partir du menu macro

Voilà voilà j'espère ne pas m'être trompé !

Cool merci beaucoup pour votre aide, je vais pouvoir réadapter ce code avec toutes mes autres colonnes

Reste plus qu'à me pencher sur le problème des dates qui lui m'a l'air beaucoup plus compliqué qu'un simple remplacement de valeurs vu le nombre de possibilités.

Bonjour rhj94, bonjour le fil, bonjour le forum,

Une version commentée...

Joseph

Merci Joseph !

J'aurai appris un truc avec le With et les .

Merci beaucoup Joseph ! Pareil j'aurais appris quelque chose. J'espère qu'avec la pratique j'aurais un bon niveau un de ces jours

Bonjour rhj94, bonjour le fil, bonjour le forum,

Je continue d'apprendre chaque jour.

Par ici on dit : " C'est en bûchant qu'on devient bûcheron. "

On peut dire aussi : "Plus qu'hier et moins que demain... "

Joseph

Encore une petite chose, dans le code qui tu as envoyé à quoi correspond le "next i" ? Est ce que je peux après ce "next i" et avant le "End With" ajouter un autre code similaire qui agira sur une autre colonne de la même feuille ?

Bonjour rhj94, bonjour le fil, bonjour le forum,

Next fonctionnerait, mais Next i nous assure qu'on parle bien de la variable i , ceci dans le cas de plusieurs For imbriqués.

Bien sûr que tu peux ajouter du code entre Next i (lequel ferme la boucle For ... next..) et le End With. Ainsi, tu es toujours dans à l'intérieur du With, les objets .range, .cells feront encore référence à la feuille indiquée par le With ...

Joseph

P.S. Penses à saluer les gens au début de tes posts.

Hello tout le monde,

J'enchaine avec les questions même si c'est un truc un peu différent cette fois.

J'essaye de remplir des cellules vides de la colonne L avec du texte, seulement si les cellules de la colonne I contient du texte.

Du coup je me prends la tête depuis ce matin avec le code suivant (et d'autres que j'ai essayés) :

  Blanks = .Range("L" & Rows.Count).End(xlUp).Row

   For i = 2 To Blanks
        If .Cells(i, 12).Value = "" And .Cells.Text(i, 9) <> "" Then
           .Cells(i, 12).Value = "English"
        End If
   Next i

Pas de résultats quand je lance la macro, rien ne se passe :/

Thanks pour l'aide

Pourquoi tu ne fais pas simplement :

If .Cells(i, 9).Value <>"" Then
.Cells(i, 12).Value = "English"
End If

Sinon, quel est le message d'erreur s'il y en a un ?

En fait ce que j'essaye de faire est de compléter les cellules vides de la colonne L (qui contient les langues) par "English" uniquement si les cellules adjacentes sont remplies (pour éviter que ca complète toute les cellules de la colonne).

   Blanks = .Range("L" & Rows.Count).End(xlUp).Row

   For i = 2 To Blanks
If .Cells(i, 12).Value = "" And .Cells.Text(i, 9) <> "" Then
            .Cells(i, 12).Value = "English"

        End If
    Next i

Du coup je reçois le message d'erreur "Nombre d'arguments incorrect ou affectation de propriété incorrecte", avec la ligne surlignée en jaune.

capture

A mon avis ça vient de ton

.Cells.Text(i, 9)

As-tu essayé simplement :

   For i = 2 To Blanks
If .Cells(i, 12).Value = "" And .Cells(i, 9) <> "" Then
            .Cells(i, 12).Value = "English"

        End If
    Next i

oui pareil, même résultat

Le problème ne viendrait-il pas du numéro de départ de ta boucle ?

Tu as essayé de remplacé ton "2" par "1" ?

Je viens de me rendre compte de quelque chose.

Le code fonctionne mais uniquement si la dernière cellule de la colonne L est remplie, dans le cas contraire, les cellules ne vont pas se remplir jusqu'à la dernière, malgré le fait que les cellules de la colonne I (les emails) ne soient pas vides et que ce soit l'une des conditions du code (cf. pièces jointes)

Bien sûr la capture "fonctionne", "English" est complété dans les cellules vides, mais c'était juste pour illustrer.


Il semblerait que j'ai réglé mon premier problème tout seul comme un grand

j'avais auparavant

   Blanks = .Range("L" & Rows.Count).End(xlUp).Row

Et j'ai maintenant

   Blanks = .Range("I" & Rows.Count).End(xlUp).Row

En fait il allait voir la dernière ligne de la même colonne au lieu d'aller jusqu'à la dernière ligne de la colonne des emails

inkedtest1 li inkedtest2 li

Hello à tous, bon en fait j'ai pas réussi à régler mon petit problème.

En fait j'essaye encore de faire en sorte que les cellules de la colonne L (les langues) soit complétées / corrigées avec "English" à conditions que :

  • celles ci soient renseignées comme "unknown language" ou "missing language" ou si elles sont vides.
  • que les cellules de la colonne I (de la même ligne) soient renseignées avec une adresse email.

voilà le code que j'ai utilisé

Sub Clean()

Dim Blanks As Long

With Sheets("page")

   Blanks = .Range("I" & Rows.Count).End(xlUp).Row

   For i = 2 To Blanks
        If .Cells(i, 12).Value = "" Or UCase(Trim(.Cells(i, 12))) Like "UNKNOWN LANGUAGE" Or UCase(Trim(.Cells(i, 12))) Like "MISSING LANGUAGE" And .Cells(i, 9).Value <> "" Then
            .Cells(i, 12).Value = "English"

        End If
   Next i

End With

End Sub

Le code fonctionne bien, mais un petit problème cependant, il remplit les cellules de la colonne "language" malgré que les cellules de la colonne "Email" soient vides... En gros, jusqu'à la dernière entrée de cette colonne.

J'ai mis le fichier en pièce jointe pour illustrer mon problème.

Je n'arrive pas à déterminer si cela a un lien avec le Range ou s'il c'est autre chose.

Merci par avance de l'aide

6classeur1.xlsm (18.55 Ko)

Hello,

Essaie ça :

Sub Clean()
Dim Blanks As Long
With Sheets("page")
Blanks = .Range("I" & Rows.Count).End(xlUp).Row
   For i = 2 To Blanks
        If .Cells(i, 9).Value <> "" And (.Cells(i, 12).Value = "" Or UCase(Trim(.Cells(i, 12))) Like "UNKNOWN LANGUAGE" Or UCase(Trim(.Cells(i, 12))) Like "MISSING LANGUAGE") Then
            .Cells(i, 12).Value = "English"
        End If
   Next i
End With
End Sub

Cordialement,

Edit : J'avais pas vu les UCase Like, corrigé

Yes !!! Merci beaucoup

C'est un peu comme les multiplications et les additions, j'ai pas fait attention à prioriser ma requête avec les parenthèses.

Une bonne chose d'apprise

Rechercher des sujets similaires à "convertir differentes donnees formats seul"