Copier valeur d'une colonne tant que ...

van_van Messages postés 63 Statut Membre -  
 Utilisateur anonyme -
Bonjour,

J'ai vrm besoin de votre aide voila j'ai posté précedemment une question mais j'ai l'impression que personne ne sait brm comment faire donc j'ai reussit a faire quelque chose d'autre. Maintenant j'aimerais une autre chose.

dans la colonne J , cellule A1 j'ai BUREAU:00235 et apres toujours dans la colonne J de la cellule A2 à A 45 (par exemple, ca ne sera pas toujours 45) je n'ai plus rien , et apres en A 46 j'ai BUREAU:00254 et ainsi de suite et ce que je voudrais, c'est que des que le programme renconte un numero de bureau il le copie sur la colonne jusqu'a temps qu'il trouve un autre numero de bureau et qu'il fasse pareil

Merci d'avance

2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    Ta question concerne quoi au juste :
    - La récupération du numéro présent dans la chaine de caractères
    - ou la copie ?

    pour la copie... tu trouveras sans mal de très nombreux exemples sur le net....
    Pöur ce qui est d'isoler le chiffre ... là .. tu pourrais faire un SPLIT de la chaine de caractères.
    par exemple :
    
     Sub test()
      Dim vaCel As String
      Dim nombre As Long
      Dim arrTmp
     
      valCel = Sheets(1).Cells(1, 1).Value
      arrTmp = Split(valCel, ":")
      If UBound(arrTmp) = 1 Then
        nombre = arrTmp(1)
        Debug.Print "nombre = " & nombre
      End If
    End Sub
    
    

    0
    1. van_van Messages postés 63 Statut Membre
       
      avant traitement
      j1 bureau:0021
      j2 vide
      j3 vide
      j4 bureau:0027
      j5 vide
      j6 vide
      j7 bureau: 0027
      j8 vide
      j9 bureau:0145
      j10vide


      Apres traitement
      j1 bureau:0021
      j2 bureau:0021
      j3 bureau:0021
      j4 bureau:0027
      j5 bureau:0027
      j6 bureau:0027
      j7 bureau: 0027
      j8 bureau:0027
      j9 bureau:0145
      j10bureau:0145
      0
    2. van_van Messages postés 63 Statut Membre
       
      voila c est ca que je chercher a faire en gros
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831 > van_van Messages postés 63 Statut Membre
         
        Ah...
        Donc juste une boulce toute bête....

        un truc du genre :

        Sub boucle()
         Dim Colonne As Integer
         Dim sht As Worksheet
         Dim LastRow As Long
         Dim valCel As String
         Dim valToCopy As String
         
         Set sht = ThisWorkbook.Sheets(1) ' Feuilles ou faire l'action
        
         'Dernière ligne utilisée de la feuille
          LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
         
          Colonne = 1 ' A changer par ton numéro de colonne
          
          'Boucle sur tes cellules
          For l = 1 To LastRow + 1
            valCel = sht.Cells(l, Colonne).Value
            If valCel <> "" Then
              valToCopy = valCel
            Else
              sht.Cells(l, Colonne).Value = valToCopy
            End If
          Next
        End Sub
        
        0
    3. van_van Messages postés 63 Statut Membre
       
      VOUS ETES GENIAL! MERCI

      juste un petit probleme le dernier bureau
      a la ligne 3000
      ex de ce qui se passe
      j3000 bureau 00271
      j30001 vide
      j3002 vide
      0
      1. Utilisateur anonyme > van_van Messages postés 63 Statut Membre
         
        Bonjour van_van,

        Pour que le travail se fasse en colonne J, tu as dû remplacer en ligne 13
        « colonne = 1 » par « colonne = 10 ».

        Pour régler le problème dont tu parles, essaye en remplaçant en ligne 11
        "A" par "J" (mais peut-être l'as-tu déjà fait ?) :

        LastRow = sht.Cells(sht.Rows.Count, "J").End(xlUp).Row

        Normalement, ça devrait marcher ; si ça ne règle pas ton problème,
        n'hésites pas à me le dire et on essayera de trouver une solution.

        Cordialement.  😊
         
        0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,
    =SI(ESTERREUR(CHERCHE(":";A1));"";DROITE(A1;(NBCAR(A1)-CHERCHE(":";A1))*1))
    à tirer vers le bas

    mais il y a peut-^tre +simple
     Michel
    0
    1. van_van Messages postés 63 Statut Membre
       
      non ce n'est pas vrm ca que je veux, il est vrai que sur le premier message je n'ai pas etait clair, du coup j'ai rajoué un commentaire afin de preciser la chose
      0
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > van_van Messages postés 63 Statut Membre
         
        merci quand même !
        0
      2. Utilisateur anonyme > van_van Messages postés 63 Statut Membre
         
        Bonjour van_van,

        Je viens de compléter ma réponse, et j'espère
        qu'elle résoudra ton problème :

        Mon message 9

        Cordialement.  😊
         
        0